Partilhar 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.

generic <typename T>
public interface class IEquatable
public interface IEquatable<T>
type IEquatable<'T> = interface
Public Interface IEquatable(Of 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.

Nota

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

Confira também