Operadores de igualdad
Nota:
Este contenido se ha copiado con permiso de Pearson Education, Inc. de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2ª edición. Esa edición se publicó en 2008 y el libro se ha revisado completamente en la tercera edición. Parte de la información de esta página puede estar obsoleta.
En esta sección se describe la sobrecarga de los operadores de igualdad y se hace referencia a operator==
y operator!=
como operadores de igualdad.
❌ NO sobrecargue uno de los operadores de igualdad y no el otro.
✔️ Asegúrese de que Object.Equals y los operadores de igualdad tienen exactamente la misma semántica y características de rendimiento similares.
Esto suele significar que Object.Equals
debe invalidarse cuando se sobrecargan los operadores de igualdad.
❌ EVITE generar excepciones desde operadores de igualdad.
Por ejemplo, devuelva el valor false si uno de los argumentos es NULL en lugar de generar NullReferenceException
.
Operadores de igualdad en tipos de valor
✔️ Sobrecargue los operadores de igualdad en los tipos de valor, si la igualdad es significativa.
En la mayoría de los lenguajes de programación, no hay ninguna implementación predeterminada de operator==
para los tipos de valor.
Operadores de igualdad en tipos de referencia
❌ EVITE sobrecargar los operadores de igualdad en tipos de referencia mutables.
Muchos lenguajes tienen operadores de igualdad integrados para los tipos de referencia. Los operadores integrados normalmente implementan la igualdad de referencia, y muchos desarrolladores se sorprenden cuando se cambia el comportamiento predeterminado a la igualdad de valores.
Este problema se mitiga en los tipos de referencia inmutables porque la inmutabilidad dificulta la diferencia entre la igualdad de referencia y la igualdad de valores.
❌ EVITE sobrecargar los operadores de igualdad en los tipos de referencia si la implementación fuera significativamente más lenta que la de la igualdad de referencia.
Portions © 2005, 2009 Microsoft Corporation. Todos los derechos reservados.
Material reimpreso con el consentimiento de Pearson Education, Inc. y extraído de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition (Instrucciones de diseño de .NET Framework: convenciones, expresiones y patrones para bibliotecas .NET reutilizables, 2.ª edición), de Krzysztof Cwalina y Brad Abrams, publicado el 22 de octubre de 2008 por Addison-Wesley Professional como parte de la serie Microsoft Windows Development.