Share via


Instrucciones para implementar Equals y el operador de igualdad (==)

Actualización: noviembre 2007

En las reglas siguientes se describen las pautas para implementar el método 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 cada vez que implemente el operador de igualdad (==) y haga que efectúen la misma cosa. Esto permite que el código de infraestructura como Hashtable y ArrayList, que utilizan el método Equals, se comporte del mismo modo que el código escrito por el usuario utilizando el operador de igualdad.

  • Invalide el método Equals siempre que implemente IComparable.

  • Plantéese la posibilidad de implementar la sobrecarga de 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 una implementación predeterminada del operador de igualdad (==) para tipos de valor. Por consiguiente, debería sobrecargar el operador de igualdad (==) en cualquier momento en que tenga sentido hacerlo.

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 de igualdad (==) siempre que reemplace el método Equals.

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

La mayoría de los lenguajes de programación proporcionan una implementación predeterminada del operador de igualdad (==) para tipos de referencia. Por consiguiente, debería tener cuidado al implementar el operador de igualdad (==) en tipos de referencia. La mayoría de los tipos de referencia, incluso los que implementan el método Equals, no deberían reemplazar el operador de igualdad (==).

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

Portions Copyright 2005 Microsoft Corporation. Reservados todos los derechos.

Portions Copyright Addison-Wesley Corporation. Reservados todos los derechos.

Para obtener más información sobre las directrices de diseño, consulte el libro titulado "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" de Krzysztof Cwalina y Brad Abrams, publicado por Addison-Wesley, 2005.

Vea también

Conceptos

Instrucciones de uso

Referencia

Implementar el método Equals

Object.Equals

Otros recursos

Instrucciones de diseño para desarrollar bibliotecas de clases