Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csOpOeEO 110 of 163 menu
◀ ▶

Сравнение объектов операторами в C#

Запись left == right для класса по умолчанию сравнивает ссылки. После настройки смыслового равенства имеет смысл добиться, чтобы знаки == и != давали тот же ответ, что и сравнение по полям.

Операторы объявляют внутри класса как статические методы. У Box сравнение и хеш-код уже согласованы; добавим операторы:

class Box { public int Value; public override bool Equals(object? obj) { if (obj is not Box other) { return false; } return Value == other.Value; } public override int GetHashCode() { return Value.GetHashCode(); } public static bool operator ==(Box? left, Box? right) { if (ReferenceEquals(left, right)) { return true; } if (left is null || right is null) { return false; } return left.Equals(right); } public static bool operator !=(Box? left, Box? right) { return !(left == right); } }

Создадим две коробки с одинаковым значением и сравним их знаком равенства:

var left = new Box { Value = 7 }; var right = new Box { Value = 7 }; Console.WriteLine(left == right);

Для Label с уже настроенным смысловым равенством добейтесь, чтобы сравнение знаком равенства для двух меток с текстом "ok" давало положительный ответ. Выведите результат.

Создайте два Label с разным текстом. Выведите, дает ли сравнение на неравенство ожидаемый ответ.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить