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

Ссылочное и смысловое равенство в C#

У классов сравнение по умолчанию и метод Equals без своей логики отвечают на вопрос об идентичности ссылки: равны только два имени одного и того же объекта.

Смысловое равенство нужно, когда два разных экземпляра с одинаковыми полями должны считаться равными. Запишем класс Tag и сравним два объекта с одним кодом:

var left = new Tag { Code = 5 }; var right = new Tag { Code = 5 }; Console.WriteLine(left == right); Console.WriteLine(ReferenceEquals(left, right)); class Tag { public int Code; }

Первый вывод показывает False: данные совпали, но ссылки разные. ReferenceEquals проверяет именно совпадение ссылки.

Создайте два объекта Badge с кодом 7. Выведите в двух строках, считает ли среда их одним экземпляром и совпадают ли коды при ручном сравнении полей.

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