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.

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.

Dérivé

Exemples

Consultez l’exemple pour la IEquatable<T>.Equals méthode .

Remarques

Cette interface est implémentée par des types dont les valeurs peuvent être équivalentes (par exemple, les classes numériques et de chaîne). Un type ou une classe valeur implémente la Equals méthode pour créer une méthode spécifique au type adaptée à la détermination de l’égalité des instances.

Notes

L’interface IComparable<T> définit la CompareTo méthode, qui détermine l’ordre de tri des instances du type d’implémentation. L’interface IEquatable<T> définit la Equals méthode, qui détermine l’égalité des instances du type d’implémentation.

L’interface IEquatable<T> est utilisée par des objets de collection génériques tels que Dictionary<TKey,TValue>, List<T>et LinkedList<T> lors du test d’égalité dans des méthodes telles que Contains, IndexOf, LastIndexOfet Remove. Il doit être implémenté pour tout objet pouvant être stocké dans une collection générique.

Notes pour les responsables de l’implémentation

Remplacez le paramètre type de l’interface IEquatable<T> par le type qui implémente cette interface.

Si vous implémentez IEquatable<T>, vous devez également remplacer les implémentations de classe de base de Equals(Object) et GetHashCode() afin que leur comportement soit cohérent avec celui de la Equals(T) méthode . Si vous remplacez Equals(Object), votre implémentation remplacée est également appelée dans les appels à la méthode statique Equals(System.Object, System.Object) sur votre classe. En outre, vous devez surcharger les op_Equality opérateurs et .op_Inequality Cela garantit que tous les tests d’égalité retournent des résultats cohérents.

Pour plus d’informations sur le remplacement de Equals(Object), consultez Equals(Object).

Pour un type valeur, vous devez toujours implémenter IEquatable<T> et remplacer Equals(Object) pour de meilleures performances. Equals(Object) s’appuie sur la réflexion pour comparer deux valeurs à des fins d’égalité. Votre implémentation de Equals(T) et votre remplacement de doivent retourner des Equals(Object) résultats cohérents.

Si vous implémentez IEquatable<T>, vous devez également implémenter IComparable<T> si les instances de votre type peuvent être triées ou triées. Si votre type implémente IComparable<T>, vous implémentez IEquatable<T>presque toujours également .

Notez qu’il existe certaines conceptions où un type prend en charge une relation d’ordre, mais l’égalité peut être distincte d’une relation de classement. Considérez une Person classe dans laquelle vous triez par ordre alphabétique. Deux personnes portant le même nom trient la même chose, mais ne sont pas la même personne.

Méthodes

Equals(T)

Indique si l'objet actuel est égal à un autre objet du même type.

S’applique à

Voir aussi