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