Réponse courte, cela dépend de la méthode Equals de votre objet.
réponse plus longue:
HashSet utilisera un IEqualityComparer pour déterminer si deux objets sont égaux. Si vous n'en fournissez pas, il utilisera EqualityComparer.Default
; qui utilise en fait juste object.Equals (a, b) plus quelques trucs pour éviter les types de valeur de boxe.
Vérification des documents pour object.Equals(a, b)
: Il est effectivement en train d'effectuer a.Equals(b)
après avoir vérifié les valeurs nulles. L'implémentation par défaut de object.Equals(other)
consiste à vérifier uniquement l'égalité de référence (c.-à-d., Il s'agit exactement de la même instance d'un objet) mais vous pouvez ignorer cette option pour vérifier si un champ ID est identique . Remarque: lors de la substitution d'Equals, vous devez également redéfinir GetHashCode.
Si vous souhaitez modifier la façon dont HashSet détermine l'égalité sans modifier la définition de l'objet, vous pouvez lui fournir un IEqualityComparer personnalisé.