Maison >développement back-end >Tutoriel C#.Net >Une brève discussion des exemples de code de Hashtable et Dictionary en C#
Une brève discussion des exemples de code de Hashtable et Dictionary en C# :
Dictionary
; Les valeurs clés de Hashtable sont toutes de type Objet, mais le type de données des valeurs clés du dictionnaire peut être spécifié.
En d'autres termes, si un type de données autre que Object est stocké dans la table de hachage, lorsque les données sont supprimées, elles doivent être affichées en conversion de type avant de pouvoir être utilisées normalement. Le dictionnaire n'a pas ce problème.
À cet égard, Hashtable est équivalent à Dictionary
Deuxièmement, la cohérence de l'ordre de lecture des données et de l'ordre d'ajout des donnéesHashtable ht = new Hashtable(); Dictionary<string, int> dic = new Dictionary<string, int>(); ht.Add("A", 1); dic.Add("A", 1); //Console.WriteLine(ht["A"]+1); //编译错误!Object类型不能和int类型直接进行相加。 Console.WriteLine((int)ht["A"] + 1);//编译通过,输出结果为:2 Console.WriteLine(dic["A"] + 1); //编译通过,输出结果为:2
Le dictionnaire peut garder l'ordre de lecture des données cohérent avec l'ordre lors de l'ajout lors de l'ajout mais pas de la suppression
; Mais après les opérations de suppression et d'ajout, il n'est plus garanti que l'ordre de lecture des données soit le même que l'ordre d'ajout.
Dictionary<int, int> dic = new Dictionary<int, int>(); dic.Add(0, 0); dic.Add(1, 1); dic.Add(2, 2); Console.WriteLine("仅仅经过添加元素处理之后:"); foreach (KeyValuePair<int, int> kvp in dic) { Console.WriteLine("Key:" + kvp.Key + " Value:" + kvp.Value); } dic.Remove(0); dic.Add(3, 3); Console.WriteLine("经过删除和添加元素处理之后:"); foreach (KeyValuePair<int, int> kvp in dic) { Console.WriteLine("Key:" + kvp.Key + " Value:" + kvp.Value); } Console.ReadKey();
Pour le dictionnaire, si un élément en est supprimé, l'élément nouvellement ajouté remplira la position de l'élément supprimé, provoquant ainsi une incohérence de l'ordre d'ajout des données avec l'ordre de lecture des données.
Pour Hashtable, son ordre de stockage des données est calculé selon un certain algorithme, donc dans la plupart des cas, son ordre de lecture des données et son ordre d'ajout des données sont incohérents.
Donc, si vous devez maintenir l'ordre lors de l'ajout de données, il est préférable de ne pas utiliser Dictionary et Hashtable.
Troisièmement, lorsque vous utilisez une valeur clé inexistante pour obtenir une valeur dans une table de hachage ou un dictionnaire
Hashtable ht = new Hashtable(); Console.WriteLine(ht["b"]==null); Console.ReadKey();
Pour Dictionary, si une valeur Key inexistante est utilisée pour obtenir la valeur, une exception de type « System.Collections.Generic.KeyNotFoundException » sera levée.
Par conséquent, lorsque vous obtenez une valeur à partir d'un dictionnaire ou d'une table de hachage, vous pouvez d'abord déterminer si la valeur Key existe (utilisez la méthode ContainsKey() pour déterminer) afin d'éviter des valeurs ou des exceptions inattendues.
Quatrièmement, la sécurité des fils
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!