Partage via


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 pour 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 d’objets à comparer.

Dérivé

Exemples

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

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înes). Un type de valeur ou une classe implémente la méthode Equals pour créer une méthode spécifique au type adaptée à la détermination de l’égalité des instances.

Note

L’interface IComparable<T> définit la méthode CompareTo, qui détermine l’ordre de tri des instances du type d’implémentation. L’interface IEquatable<T> définit la méthode Equals, 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 de l’égalité dans des méthodes telles que Contains, IndexOf, LastIndexOfet Remove. Elle doit être implémentée pour tout objet susceptible d’être stocké dans une collection générique.

Notes pour les responsables de l’implémentation

Remplacez le paramètre de 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 de GetHashCode() afin que leur comportement soit cohérent avec celle de la méthode Equals(T). Si vous remplacez Equals(Object), votre implémentation substituée est également appelée dans les appels à la méthode de Equals(System.Object, System.Object) statique sur votre classe. En outre, vous devez surcharger les opérateurs op_Equality et op_Inequality. Cela garantit que tous les tests d’égalité retournent des résultats cohérents.

Pour plus d’informations sur la substitution 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) types de valeurs de zones et s’appuie sur la réflexion pour comparer deux valeurs pour l’égalité. Votre implémentation de Equals(T) et votre remplacement de Equals(Object) doivent retourner des 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 presque toujours IEquatable<T>.

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 classe Person où 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