IEquatable<T> Interfaz

Definición

Define un método generalizado que implementa un tipo o una clase de valor con el fin de crear un método específico del tipo para determinar la igualdad de las instancias.

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

Tipo de objetos que se van a comparar.

Derivado

Ejemplos

Vea el ejemplo del IEquatable<T>.Equals método .

Comentarios

Esta interfaz se implementa mediante tipos cuyos valores se pueden equiparar (por ejemplo, las clases numéricas y de cadena). Un tipo de valor o clase implementa el método para crear un método específico del tipo adecuado para determinar la Equals igualdad de instancias.

Nota

La IComparable<T> interfaz define el CompareTo método , que determina el criterio de ordenación de las instancias del tipo de implementación. La IEquatable<T> interfaz define el Equals método , que determina la igualdad de instancias del tipo de implementación.

La IEquatable<T> interfaz se usa en objetos de colección genéricos como Dictionary<TKey,TValue>, List<T>y LinkedList<T> cuando se prueba la igualdad en métodos como Contains, IndexOf, LastIndexOfy Remove. Debe implementarse para cualquier objeto que se pueda almacenar en una colección genérica.

Notas a los implementadores

Reemplace el parámetro type de la IEquatable<T> interfaz por el tipo que implementa esta interfaz.

Si implementa IEquatable<T>, también debe invalidar las implementaciones de clase base de Equals(Object) y GetHashCode() para que su comportamiento sea coherente con el Equals(T) del método . Si invalida Equals(Object), también se llama a la implementación invalidada en llamadas al método estático Equals(System.Object, System.Object) en la clase . Además, debe sobrecargar los op_Equality operadores y op_Inequality . Esto garantiza que todas las pruebas de igualdad devuelvan resultados coherentes.

Para obtener información sobre cómo invalidar Equals(Object), vea Equals(Object).

Para un tipo de valor, siempre debe implementar IEquatable<T> e invalidar Equals(Object) para mejorar el rendimiento. Equals(Object) boxes tipos de valor y se basa en la reflexión para comparar dos valores para la igualdad. Tanto la implementación de Equals(T) como la invalidación de Equals(Object) deben devolver resultados coherentes.

Si implementa IEquatable<T>, también debe implementar IComparable<T> si las instancias del tipo se pueden ordenar o ordenar. Si el tipo implementa IComparable<T>, casi siempre también implementa IEquatable<T>.

Tenga en cuenta que hay algunos diseños en los que un tipo admite una relación de orden, pero la igualdad puede ser distinta de una relación de ordenación. Considere una Person clase en la que se ordena alfabéticamente. Dos personas con el mismo nombre ordenan lo mismo, pero no son la misma persona.

Métodos

Equals(T)

Indica si el objeto actual es igual que otro objeto del mismo tipo.

Se aplica a

Consulte también