Capítulo 9: Instrucciones para implementar Equals y el operador de igualdad (==)

Publicado: 26 de junio de 2006

Patterns & Practices
Microsoft Corporation
Diciembre de 2002

imagen

https://msdn.microsoft.com/practices/

En las reglas siguientes se describen las pautas para implementar el método Equals y el operador de igualdad (==).

En esta página

Capítulo 9: Instrucciones para implementar Equals y el operador de igualdad (==) Capítulo 9: Instrucciones para implementar Equals y el operador de igualdad (==)

Capítulo 9: Instrucciones para implementar Equals y el operador de igualdad (==)

  • Implemente el método GetHashCode siempre que implemente el método Equals. De este modo, los métodos Equals y GetHashCode se mantienen sincronizados.

  • Reemplace el método Equals siempre que implemente el operador (==), y haga que los dos realicen las mismas acciones. Esto permite que el código de infraestructuras como Hashtable y ArrayList, que utilizan el método Equals, se comporten del mismo modo que el código escrito por el usuario con el operador (==).

  • Reemplace el método Equals siempre que implemente la Interfaz IComparable.

  • Tenga en cuenta que debe implementar la sobrecarga de operadores para los operadores de igualdad (==), distinto de (!=), menor que (<), y mayor que (>) cuando implemente IComparable.

  • No inicie excepciones desde los métodos Equals o GetHashCode ni desde el operador de igualdad (==).

Para obtener más información sobre el método Equals, vea Implementar el método Equals.

Implementar el operador de igualdad (==) en tipos de valor

En la mayoría de los lenguajes de programación no hay un modelo de implementación predeterminada del operador de igualdad (==) para tipos de valor. Por consiguiente, deberá sobrecargar el operador (==) cuando sea necesario.

Considere la posibilidad de implementar el método Equals en tipos de valor pues la implementación predeterminada en System.ValueType no se realiza tan bien como la implementación personalizada.

Implemente el operador (==) siempre que reemplace el método Equals.

Implementar el operador de igualdad (==) en tipos de referencia En la mayoría de los lenguajes de programación no hay un modelo de implementación predeterminada del operador de igualdad (==) para tipos de referencia. Por consiguiente, deberá tener cuidado al implementar el operador (==) en tipos de referencia. La mayoría de los tipos de referencia, incluso los que implementan el método Equals, no deben reemplazar el operador (==).

Reemplace el operador (==) si el tipo es un tipo base como Point, String, BigNumber, etc. Siempre que considere la posibilidad de sobrecargar los operadores de adición (+) y de sustracción (-), deberá considerar también la sobrecarga del operador (==).

Vea también

Instrucciones de diseño para programadores de bibliotecas de clases