Question

Je me demandais si le HashSet<T> .Net est entièrement basée sur les codes de hachage ou si elle utilise l'égalité ainsi?

J'ai une classe particulière que je potentiellement instancier des millions de cas de et il y a une chance raisonnable que certains codes de hachage entrent en collision à ce moment-là.

J'envisage d'utiliser HashSet de stocker des instances de cette classe et je me demande si elle est en fait la peine de faire - si l'unicité d'un élément est déterminé uniquement sur son code de hachage alors c'est d'aucune utilité pour moi applications réelles

documentation MSDN semble être assez vague sur ce sujet - une illumination serait appréciée

Était-ce utile?

La solution

Non, il utilise l'égalité aussi bien. Par définition, les codes de hachage ne doivent pas nécessairement être unique - tout ce qui suppose qu'ils seront est cassé. HashSet<T> est sensible. Il utilise un IEqualityComparer<T> (par défaut à EqualityComparer<T>.Default ) pour effectuer les deux génération de code de hachage et des tests égalité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top