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 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
, LastIndexOf
et 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. |