Diretrizes para a implementação de Equals e o operador de igualdade (= =)
As regras seguintes descrevem as diretrizes para a implementação de é igual a método e o operador de igualdade (= =):
Implementar a GetHashCode método sempre que você implemente o é igual a método. Isso mantém o é igual a e GetHashCode sincronizados.
Substituir o é igual a método sempre que você implemente o operador de igualdade (= =) e torná-los a fazer a mesma coisa. Isso permite que o código de infra-estrutura, como Hashtable e ArrayList, que usam o é igual a método, se comporte da mesma maneira que o código do usuário gravado usando o operador de igualdade.
Substituir o é igual a o método sempre que você implementar a IComparable.
Considere a implementação do operador de sobrecarga de igualdade (= =), não é igual (! =), menor que (<) e maior que (>) operadores ao implementar IComparable.
Não jogue exceções a partir do é igual a ou GetHashCode métodos ou o operador de igualdade (= =).
Para obter informações sobre o é igual a método, consulte implementar o método é igual a.
Implementando o operador de igualdade (= =) em tipos de valor
Na maioria das linguagens de programação, não há nenhuma implementação padrão do operador de igualdade (= =) para tipos de valor. Portanto, você deverá sobrecarregar o operador de igualdade (= =) sempre igualdade é significativa.
Você deve considerar a implementação a é igual a tipos de método de valor, porque a implementação do padrão em System.ValueType não executará, bem como implementação personalizada.
Implementar o operador de igualdade (= =) a qualquer momento que você substituir o é igual a método.
Implementando o operador de igualdade (= =) em tipos de referência
A maioria das linguagens fornecem uma implementação padrão do operador de igualdade (= =) para tipos de referência. Portanto, você deve usar o cuidado ao implementar o operador de igualdade (= =) em tipos de referência. Referência a maioria dos tipos, mesmo aquelas que implementam o é igual a método, não devem substituir o operador de igualdade (= =).
Substituir o operador de igualdade (= =), se o seu tipo é um tipo base como um Point, String, BigNumbere assim por diante. Sempre que você considerar a sobrecarga de adição (+) e operadores de subtração (-), você também deve considerar sobrecarregar o operador de igualdade (= =).
Portions Copyright 2005 Microsoft Corporation. Todos os direitos reservados.
Portions Copyright Addison-Wesley Corporation. Todos os direitos reservados.
Para obter mais informações sobre as diretrizes de design, consulte a "diretrizes de Design do Framework: Convenções, idiomas e padrões de reutilizável.Bibliotecas de rede" catálogo por Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.
Consulte também
Referência
Implementing the Equals Method
Conceitos
Outros recursos
Diretrizes de Design para desenvolvimento bibliotecas de classe