Оператор перегрузки == против Equals ()

Я работаю над проектом C #, в котором до сих пор я использовал неизменяемые объекты и фабрики, чтобы гарантировать, что объекты типаFoo всегда можно сравнить на равенство с==.

Foo объекты не могут быть изменены после создания, и фабрика всегда возвращает один и тот же объект для заданного набора аргументов. Это прекрасно работает, и во всей кодовой базе мы предполагаем, что== всегда работает для проверки равенства.

Теперь мне нужно добавить некоторые функциональные возможности, которые вводят крайний случай, для которого это не всегда работает. Самое простое - перегрузитьoperator == для этого типа, так что ни один другой код в проекте не должен изменяться. Но это кажется мне запахом кода: перегрузкаoperator == и нетEquals просто кажется странным, и я привык к соглашению, что== проверяет равенство ссылок иEquals проверяет равенство объектов (или любой другой термин).

Это законное беспокойство, или я должен просто пойти дальше и перегрузитьoperator ==?

Ответы на вопрос(6)

Ваш ответ на вопрос