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

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

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

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

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

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

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