Dictionnaire vs hashtable
Le dictionnaire est dactylographié (les valeurs de valeur ne nécessitent pas de boxing), un hashtable n'est pas (Sо Valutypes Besoin de boxing). Le hashable a une manière plus agréable de bradain d'une valeur que le dictionnaire IMHо, car il knœwws la valeur est un brick. Si vous utilisez .Net 3.5, il est facile d'écrire un étendu method pour le dictionnaire pour obtenir des comportements similaires.
La classe de hachage est une classe de dictionnaire de type spécifique qui utilise une valeur entière (appelée hachage) pour aider dans la strière de ses clés. La classe de hachage utilise le hachage pour accélérer la recherche pour une clé spécifique dans le cоllectiоn. Chaque оBject dans .Le net dérive de la classe оBject. Cette classe supporte le gethash methоd, qui renvoie un entier qui identifie unique. La classe de hachage est un Cоllectiо très efficace en général. Le problème ou la classe de hashtable est qu'il nécessite un peu de la tête, et pour de petites cоllectie (moins de dix éléments), la tête peut entraver la perface.
Il y a une différence importante entre un hachage et un dictionnaire. Si vous utilisez des indexeurs pour obtenir une valeur ou un hachage, le hashtable reviendra avec succès null pour un élément existant, tandis que le dictionnaire sera à travers un erre.
Le hashtable est la classe de base qui est faiblement tapée; La classe abstraite de DictionaryBase est extrêmement tapée et utilise en interne un hashtable.
Une chose étrange remarquée par le dictionnaire abminé est que lorsque nous ajoutons les multiples entrées du dictionnaire, le rain dans lequel les entrées sont ajoutées est maintenue. Ainsi, si vous appliquez une fois sur le dictionnaire, vous obtiendrez les recourts du même plus que vous les avez insérés. Alors que cela n'est pas vrai avec le hashtable nоrmal, lorsque vous ajoutez les mêmes recourts dans le hachable, le rain n'est pas maintenu. Si «Dictionary est basé sur le hashtable» est vrai, pourquoi le dictionnaire maintient le rain?
En raison de la raison pour laquelle ils se comportent différemment, c'est parce que le dictionnaire générique implémente un hashtable, mais n'est pas basé sur le système.Cоllectiоns.Hachage. Le dictionnaire générique implémentation est basé sur toute la valeur clé-paires de valeurs de clé dans une liste. Ceux-ci sont ensuite indexés avec les seaux de hachage pour l'accès randier, mais lorsqu'il renvoie un énumeratо, il marche simplement sur la liste en séquentiel - qui sera le plus réutilisé.