IEquatable<T> Interface

Définition

Définit une méthode généralisée qu'un type valeur ou une classe implémente pour créer une méthode spécifique au type permettant de déterminer l'égalité des instances.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)

Paramètres de type

T

Type des objets à comparer.The type of objects to compare.

Dérivé

Exemples

Consultez l’exemple de la IEquatable<T>.Equals méthode.See the example for the IEquatable<T>.Equals method.

Remarques

Cette interface est implémentée par les types dont les valeurs peuvent être assimilées (par exemple, les classes numériques et de chaîne).This interface is implemented by types whose values can be equated (for example, the numeric and string classes). Un type valeur ou une classe implémente Equals la méthode pour créer une méthode spécifique au type, adaptée à la détermination de l’égalité des instances.A value type or class implements the Equals method to create a type-specific method suitable for determining equality of instances.

Notes

L' IComparable<T> interface définit la CompareTo méthode, qui détermine l’ordre de tri des instances du type d’implémentation.The IComparable<T> interface defines the CompareTo method, which determines the sort order of instances of the implementing type. L' IEquatable<T> interface définit la Equals méthode, qui détermine l’égalité des instances du type d’implémentation.The IEquatable<T> interface defines the Equals method, which determines the equality of instances of the implementing type.

L' IEquatable<T> interface est utilisée par les objets de collection génériques Dictionary<TKey,TValue>tels List<T>que, LinkedList<T> et lorsque vous testez l’égalité dans Containsdes méthodes LastIndexOftelles que Remove, IndexOf, et.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. Elle doit être implémentée pour tout objet qui peut être stocké dans une collection générique.It should be implemented for any object that might be stored in a generic collection.

Notes pour les responsables de l’implémentation

Remplacez le paramètre de type de IEquatable<T> l’interface par le type qui implémente cette interface.Replace the type parameter of the IEquatable<T> interface with the type that is implementing this interface. Si vous implémentez IEquatable<T>, vous devez également substituer les implémentations de classe de GetHashCode() base de Equals(Object) et afin que leur comportement soit cohérent avec Equals(T) celui de la méthode.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. Si vous substituez Equals(Object), votre implémentation substituée est également appelée dans les appels à la méthode Equals(System.Object, System.Object) statique sur votre 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. En outre, vous devez surcharger op_Inequality les op_Equality opérateurs et.In addition, you should overload the op_Equality and op_Inequality operators. Cela garantit que tous les tests d’égalité retournent des résultats cohérents.This ensures that all tests for equality return consistent results.

Pour plus d’informations sur Equals(Object)la substitution, Equals(Object) consultez l’article.For information on overriding Equals(Object), see the Equals(Object) article.

Pour un type valeur, vous devez toujours implémenter IEquatable<T> et remplacer Equals(Object) pour obtenir de meilleures performances.For a value type, you should always implement IEquatable<T> and override Equals(Object) for better performance. Equals(Object)les types valeur de zone et s’appuient sur la réflexion pour comparer deux valeurs d’égalité.Equals(Object) boxes value types and relies on reflection to compare two values for equality. Votre implémentation de Equals(T) et votre remplacement de doivent retourner Equals(Object) des résultats cohérents.Both your implementation of Equals(T) and your override of Equals(Object) should return consistent results. Si vous implémentez IEquatable<T>, vous devez également IComparable<T> implémenter si des instances de votre type peuvent être triées ou triées.If you implement IEquatable<T>, you should also implement IComparable<T> if instances of your type can be ordered or sorted. Si votre type implémente IComparable<T>, vous implémentez IEquatable<T>presque toujours également.If your type implements IComparable<T>, you almost always also implement IEquatable<T>.

Notez qu’il existe des conceptions où un type prend en charge une relation de commande, mais l’égalité peut être différente d’une relation de classement.Note that there are some designs where a type supports an order relation, but equality may be distinct from an ordering relation. Prenons l' `Person` exemple d’une classe dans laquelle vous triez par ordre alphabétique.Consider a `Person` class where you sort alphabetically. Deux personnes portant le même nom trient le même nom, mais ne sont pas la même personne.Two people with the same name sort the same, but are not the same person.

Méthodes

Equals(T)

Indique si l'objet actuel est égal à un autre objet du même type.Indicates whether the current object is equal to another object of the same type.

S’applique à

Voir aussi