Compartilhar via


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

Object.Equals

Conceitos

Diretrizes de uso

Outros recursos

Diretrizes de Design para desenvolvimento bibliotecas de classe