IEquatable<T> IEquatable<T> IEquatable<T> IEquatable<T> Interface

Definição

Define um método generalizado que implementa uma classe ou um tipo de valor para criar um método de tipo específico para determinar igualdade de instâncias.Defines a generalized method that a value type or class implements to create a type-specific method for determining equality of instances.

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.The type of objects to compare.

Derivado

Exemplos

Consulte o exemplo para o IEquatable<T>.Equals método.See the example for the IEquatable<T>.Equals method.

Comentários

Essa interface é implementada pelos tipos cujos valores podem ser equacionados (por exemplo, o numérico e a cadeia de caracteres de classes).This interface is implemented by types whose values can be equated (for example, the numeric and string classes). Implementa uma classe ou um tipo de valor a Equals método para criar um método específico do tipo adequado para determinar igualdade de instâncias.A value type or class implements the Equals method to create a type-specific method suitable for determining equality of instances.

Observação

O IComparable<T> interface define o CompareTo método, que determina a ordem de classificação de instâncias do tipo de implementação.The IComparable<T> interface defines the CompareTo method, which determines the sort order of instances of the implementing type. O IEquatable<T> interface define o Equals método, que determina a igualdade de instâncias do tipo de implementação.The IEquatable<T> interface defines the Equals method, which determines the equality of instances of the implementing type.

O IEquatable<T> interface é usada por objetos de coleção genérica, como Dictionary<TKey,TValue>, List<T>, e LinkedList<T> durante o teste de igualdade em métodos como Contains, IndexOf, LastIndexOf, e Remove.The IEquatable<T> interface is used by generic collection objects such as Dictionary<TKey,TValue>, List<T>, and LinkedList<T> when testing for equality in such methods as Contains, IndexOf, LastIndexOf, and Remove. Ele deve ser implementado para qualquer objeto que pode ser armazenado em uma coleção genérica.It should be implemented for any object that might be stored in a generic collection.

Notas aos Implementadores

Substitua o parâmetro de tipo a IEquatable<T> interface com o tipo que está implementando essa interface.Replace the type parameter of the IEquatable<T> interface with the type that is implementing this interface. Se você implementar IEquatable<T>, você também deve substituir as implementações de classe base das Equals(Object) e GetHashCode() para que seu comportamento é consistente com a do Equals(T) método.If you implement IEquatable<T>, you should also override the base class implementations of Equals(Object) and GetHashCode() so that their behavior is consistent with that of the Equals(T) method. Se você substituir Equals(Object), sua implementação substituída também é chamada em chamadas para estático Equals(System.Object, System.Object) método em sua classe.If you do override Equals(Object), your overridden implementation is also called in calls to the static Equals(System.Object, System.Object) method on your class. Além disso, você deve sobrecarregar o op_Equality e op_Inequality operadores.In addition, you should overload the op_Equality and op_Inequality operators. Isso garante que todos os testes de igualdade retornem resultados consistentes.This ensures that all tests for equality return consistent results.

Para obter informações sobre a substituição Equals(Object), consulte o Equals(Object) artigo.For information on overriding Equals(Object), see the Equals(Object) article.

Para um tipo de valor, você sempre deve implementar IEquatable<T> e substituir Equals(Object) para melhorar o desempenho.For a value type, you should always implement IEquatable<T> and override Equals(Object) for better performance. Equals(Object) caixas de tipos de valor e se baseia em reflexão para comparar dois valores quanto à igualdade.Equals(Object) boxes value types and relies on reflection to compare two values for equality. Ambos os sua implementação de Equals(T) e sua substituição do Equals(Object) deve retornar resultados consistentes.Both your implementation of Equals(T) and your override of Equals(Object) should return consistent results. Se você implementar IEquatable<T>, você também deve implementar IComparable<T> se instâncias de seu tipo podem ser ordenadas ou classificadas.If you implement IEquatable<T>, you should also implement IComparable<T> if instances of your type can be ordered or sorted. Se o tipo implementa IComparable<T>, você quase sempre também implementar IEquatable<T>.If your type implements IComparable<T>, you almost always also implement IEquatable<T>.

Observe que há alguns designs, onde um tipo dá suporte a uma relação de ordem, mas igualdade pode ser distinta de uma relação de ordenação.Note that there are some designs where a type supports an order relation, but equality may be distinct from an ordering relation. Considere um `Person` classe onde você classificar em ordem alfabética.Consider a `Person` class where you sort alphabetically. Duas pessoas com o mesmo nome classificar os mesmos, mas não serão a mesma pessoa.Two people with the same name sort the same, but are not the same person.

Métodos

Equals(T) Equals(T) Equals(T) Equals(T)

Indica se o objeto atual é igual a outro objeto do mesmo tipo.Indicates whether the current object is equal to another object of the same type.

Aplica-se a

Veja também