Duplicar posible:
Why ReferenceEquals and == operator behave different from Equals¿Por qué la implementación predeterminada == no llama igual?
La implementación predeterminada de ==
operador compara objetos por referencias. Por lo tanto, cuando anula Equals (el comportamiento predeterminado es el mismo), también debe especificar los operadores ==
y !=
para que invoquen Equals (y lo hagan en cada clase de jerarquía ya que los operadores ==
y !=
no son virtuales).
Mi pregunta es ¿por qué es así? ¿Por qué ==
y !=
comparan objetos por referencia en lugar de usar Equals? Supongo que debería haber una razón para algo tan fundamental.
Actualización.
Para comentarios: Me supone ==
debe depender de Iguales (pero no viceversa) como se puede anular iguales en la clase base y utilizar esta aplicación en las clases derivadas automáticamente. No funcionaría si Equals usó ==
en su implementación, ya que ==
no es virtual.
¿Qué debe hacer el uso de 'equal'? – Oded
Por diseño, similar a Java, realmente. –
@JamesMichaelHare, las decisiones de diseño no vienen de la nada ... – SiberianGuy