Ler em inglês

Compartilhar via


IEquatable<T> Interface

Definição

Define um método generalizado que um tipo de valor ou classe implementa para criar um método específico de tipo para determinar a igualdade de instâncias.

C#
public interface IEquatable<T>

Parâmetros de tipo

T

O tipo de objetos a serem comparados.

Derivado

Exemplos

Consulte o exemplo do método IEquatable<T>.Equals.

Comentários

Essa interface é implementada por tipos cujos valores podem ser igualados (por exemplo, as classes numéricas e de cadeia de caracteres). Um tipo de valor ou classe implementa o método Equals para criar um método específico de tipo adequado para determinar a igualdade de instâncias.

Observação

A interface IComparable<T> define o método CompareTo, que determina a ordem de classificação de instâncias do tipo de implementação. A interface IEquatable<T> define o método Equals, que determina a igualdade de instâncias do tipo de implementação.

A interface IEquatable<T> é usada por objetos de coleção genéricos, como Dictionary<TKey,TValue>, List<T>e LinkedList<T> ao testar a igualdade em métodos como Contains, IndexOf, LastIndexOfe Remove. Ele deve ser implementado para qualquer objeto que possa ser armazenado em uma coleção genérica.

Notas aos Implementadores

Substitua o parâmetro de tipo da interface IEquatable<T> pelo tipo que está implementando essa interface.

Se você implementar IEquatable<T>, você também deverá substituir as implementações de classe base de Equals(Object) e GetHashCode() para que seu comportamento seja consistente com o do método Equals(T). Se você substituir Equals(Object), sua implementação substituída também será chamada em chamadas para o método de Equals(System.Object, System.Object) estático em sua classe. Além disso, você deve sobrecarregar os operadores op_Equality e op_Inequality. Isso garante que todos os testes de igualdade retornem resultados consistentes.

Para obter informações sobre a substituição de Equals(Object), consulte Equals(Object).

Para um tipo de valor, você sempre deve implementar IEquatable<T> e substituir Equals(Object) para melhorar o desempenho. Equals(Object) tipos de valor de caixas e depende da reflexão para comparar dois valores de igualdade. Tanto a implementação de Equals(T) quanto a substituição de Equals(Object) devem retornar resultados consistentes.

Se você implementar IEquatable<T>, também deverá implementar IComparable<T> se instâncias do seu tipo puderem ser ordenadas ou classificadas. Se o seu tipo implementar IComparable<T>, você quase sempre também implementará IEquatable<T>.

Observe que há alguns designs em que um tipo dá suporte a uma relação de ordem, mas a igualdade pode ser distinta de uma relação de ordenação. Considere uma classe Person em que você classifica em ordem alfabética. Duas pessoas com o mesmo nome classificam o mesmo, mas não são a mesma pessoa.

Métodos

Equals(T)

Indica se o objeto atual é igual a outro objeto do mesmo tipo.

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Confira também