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 de la IEquatable<T>.Equals méthode.

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). Un type valeur ou une classe 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' IComparable<T> interface définit la CompareTo méthode, qui détermine l’ordre de tri des instances du type d’implémentation. L' IEquatable<T> interface définit la Equals méthode, qui détermine l’égalité des instances du type d’implémentation.

L' IEquatable<T> interface est utilisée par les objets de collection génériques tels que Dictionary<TKey,TValue> , List<T> et LinkedList<T> lorsque vous testez l’égalité dans des méthodes telles que Contains , IndexOf , LastIndexOf et Remove . Elle doit être implémentée pour tout objet qui peut être stocké dans une collection générique.

Notes pour les responsables de l’implémentation

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

Si vous implémentez IEquatable<T> , vous devez également substituer 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 substituez Equals(Object) , votre implémentation substituée est également appelée dans les appels à la Equals(System.Object, System.Object) méthode statique sur votre classe. En outre, vous devez surcharger les op_Equality op_Inequality opérateurs et. Cela garantit que tous les tests d’égalité retournent des résultats cohérents.

Pour plus d’informations sur la substitution Equals(Object) , consultez Equals(Object) .

Pour un type valeur, vous devez toujours implémenter IEquatable<T> et remplacer Equals(Object) pour obtenir de meilleures performances. Equals(Object) les types valeur de zone et s’appuient sur la réflexion pour comparer deux valeurs d’é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 des instances de votre type peuvent être triées ou triées. Si votre type implémente IComparable<T> , vous implémentez presque toujours également 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. Prenons l’exemple d’une Person classe dans laquelle vous triez par ordre alphabétique. Deux personnes portant le même nom trient le même nom, 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