Может ли кто-нибудь указать на идею перегрузки operator==
для выполнения глубокого сравнения объектов (вместо эталонного сравнения).
Из MSDN:
По умолчанию оператор == проверяет равенство ссылок, определяя, указывают ли две ссылки на один и тот же объект.Следовательно, ссылочные типы не должны реализовывать оператор == для получения этой функциональности.Когда тип является неизменяемым, то есть данные, содержащиеся в экземпляре, не могут быть изменены, может быть полезен оператор перегрузки == для сравнения равенства значений вместо ссылочного равенства, поскольку в качестве неизменяемых объектов они могут рассматриваться как длинныетак как они имеют одинаковое значение.Не стоит переопределять оператор == в неизменяемых типах.
Когда это действительно принесет пользу?
И, например, если у каждого объекта есть метод Equals
, что делает сравнение значений возможным, почему кто-то когда-либо выполняет значение (не ссылка) сравнение с использованием оператора x == y
?
Я думаю, что-то не понимаюпотому что это выглядит очень странно для меня.