IEquatable<T> Interfaz
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Define un método generalizado que implementa un tipo de valor o clase para crear un método específico del tipo para determinar la igualdad de 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 método IEquatable<T>.Equals.
Comentarios
Esta interfaz se implementa mediante tipos cuyos valores se pueden comparar (por ejemplo, las clases numéricas y de cadena). Un tipo de valor o clase implementa el método Equals para crear un método específico del tipo adecuado para determinar la igualdad de instancias.
Nota
La interfaz IComparable<T> define el método CompareTo, que determina el criterio de ordenación de las instancias del tipo de implementación. La interfaz IEquatable<T> define el método Equals, que determina la igualdad de instancias del tipo de implementación.
La interfaz IEquatable<T> se usa en objetos de colección genéricos como Dictionary<TKey,TValue>, List<T>y LinkedList<T> al probar la igualdad en métodos como Contains
, IndexOf
, LastIndexOf
y 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 interfaz IEquatable<T> 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 del método Equals(T). 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 operadores op_Equality
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) cuadros de valores 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 pedido, 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 a otro objeto del mismo tipo. |