2009-05-25 10 views
1

Comme je sais, dans HashTable, la valeur de hachage de la chaîne de clé est unique car s'il y a deux mêmes chaînes, la fonction GetHashCode() remplacera la première par la seconde. Cela garantira qu'il n'y a pas de valeurs de hachage identiques générées par les différentes chaînes ayant les mêmes valeurs. Mais en ce qui concerne la classe de dictionnaire générique, nous pouvons spécifier n'importe quel type comme paramètre de type pour la clé. Par conséquent, la valeur de hachage générée par cette clé ne peut pas être unique car elle n'effectue pas le comportement de chaîne. Est-ce vrai? Si ce n'est pas le cas, quelle est la procédure derrière ce scénario générique?Valeur de clé de classe de dictionnaire générique

Merci à l'avance,

Jay ...

Répondre

3

Le hachage est utilisé seulement pour mettre des articles dans des seaux « » aux fins de recherche rapide. La valeur de hachage n'est pas utilisée pour déterminer l'égalité.

Donc, ne vous inquiétez pas, si deux chaînes (ou quelque chose d'autre) renvoient exactement le même hachage, elles iront en effet dans le même compartiment, mais elles seront toujours des 'clés' distinctes.

1

La valeur de hachage est obtenue par GetHashCode(), que chaque objet implémente. L'implémentation par défaut, héritée de System.Object, ne garantit pas des valeurs de retour uniques pour différents objets. Cependant, les valeurs de hachage n'ont pas besoin d'être uniques à l'objet, car elles ne sont utilisées que pour accélérer la recherche, et votre classe de clés a toujours besoin d'une implémentation d'égalité pour déterminer si les clés sont égales. Par conséquent, si vous utilisez System.Object comme clé, il connaîtra une clé d'une autre en fonction de l'égalité de la référence, car elle utilisera Object.Equals pour le comprendre.

Questions connexes