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