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 por tipos cujos valores podem ser equivalentes (por exemplo, as classes numéricas e de cadeia de caracteres).This interface is implemented by types whose values can be equated (for example, the numeric and string classes). Um tipo de valor ou classe implementa Equals o método para criar um método específico de tipo adequado para determinar a 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

A IComparable<T> interface define o CompareTo método, que determina a ordem de classificação das 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. A 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.

A IEquatable<T> interface é usada por objetos Contains LastIndexOf Remove IndexOf LinkedList<T> Dictionary<TKey,TValue> List<T>de coleção genéricos, como, e ao testar a igualdade em tais métodos como,, e.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 possa 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 da IEquatable<T> interface pelo 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>o, também deverá substituir as implementações de classe Equals(Object) base GetHashCode() de e, para que seu comportamento seja consistente com Equals(T) o do 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), a implementação substituída também será chamada em chamadas para o método Equals(System.Object, System.Object) estático 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 op_Equality os op_Inequality operadores e.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 Equals(Object)substituição, consulte Equals(Object) o artigo.For information on overriding Equals(Object), see the Equals(Object) article.

Para um tipo de valor, você deve sempre IEquatable<T> implementar e Equals(Object) substituir para melhorar o desempenho.For a value type, you should always implement IEquatable<T> and override Equals(Object) for better performance. Equals(Object)tipos de valor de caixas e depende da reflexão para comparar dois valores de igualdade.Equals(Object) boxes value types and relies on reflection to compare two values for equality. A implementação de Equals(T) e sua substituição do Equals(Object) devem retornar resultados consistentes.Both your implementation of Equals(T) and your override of Equals(Object) should return consistent results. Se você implementar IEquatable<T>o, também deverá implementar IComparable<T> se as instâncias do 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 seu tipo IComparable<T>implementa, você quase sempre também IEquatable<T>implementa.If your type implements IComparable<T>, you almost always also implement IEquatable<T>.

Observe que há alguns designs em que um tipo dá suporte a uma relação de pedido, mas a 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 uma `Person` classe na qual você classifica alfabeticamente.Consider a `Person` class where you sort alphabetically. Duas pessoas com o mesmo nome têm a mesma classificação, mas não são a mesma pessoa.Two people with the same name sort the same, but are not the same person.

Métodos

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