IEquatable<T> Interface
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 des types dont les valeurs peuvent être équivalentes (par exemple, les classes numériques et de chaînes). 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 de 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’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 et Equals(Object) GetHashCode() pour que leur comportement soit cohérent avec celui de la Equals(T) méthode. Si vous remplacez Equals(Object), votre implémentation substitué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érateurs et op_Inequality
les op_Equality
opérateurs. Cela garantit que tous les tests d’égalité retournent des résultats cohérents.
Pour plus d’informations sur la Equals(Object)substitution, consultez Equals(Object).
Pour un type valeur, vous devez toujours implémenter IEquatable<T> et remplacer Equals(Object) pour de meilleures performances. Equals(Object) box value types et s’appuie sur la réflexion pour comparer deux valeurs pour l’égalité. Votre implémentation et Equals(T) votre remplacement 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 IEquatable<T>presque toujours également .
Notez qu’il existe certaines conceptions où un type prend en charge une relation d’ordre, mais que 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. |