Operador de sobrecarga == versus Equals ()
Estoy trabajando en un proyecto de C # en el que, hasta ahora, he usado objetos y fábricas inmutables para garantizar que los objetos de tipoFoo
Siempre se puede comparar para la igualdad con==
.
Foo
los objetos no se pueden cambiar una vez creados, y la fábrica siempre devuelve el mismo objeto para un conjunto dado de argumentos. Esto funciona muy bien, y en todo el código base asumimos que==
Siempre funciona para comprobar la igualdad.
Ahora necesito agregar algunas funciones que presenten un caso perimetral para el que esto no siempre funcionará. Lo más fácil es sobrecargar.operator ==
para ese tipo, de modo que ninguno de los otros códigos en el proyecto deba cambiar. Pero esto me parece un olor a código: sobrecargaoperator ==
y noEquals
Simplemente parece raro, y estoy acostumbrado a la convención de que==
comprueba la igualdad de referencia, yEquals
Verifica la igualdad de objetos (o cualquiera que sea el término).
¿Es esta una preocupación legítima, o debo seguir adelante y sobrecargar?operator ==
?