IEquatable<T> Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
, LastIndexOf
e 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. |