为什么Dictionary比Hashtable更受欢迎?
在大多数编程语言中,字典比hashtables更受欢迎。 这背后的原因是什么?
对于它的价值,一个字典(概念)的哈希表。
如果你的意思是“为什么我们使用Dictionary<TKey, TValue>类而不是Hashtable类?”,那么这是一个简单的答案: Dictionary<TKey, TValue>是一个泛型类型,而Hashtable则不是。 这意味着你使用Dictionary<TKey, TValue>获得类型安全性,因为你不能插入任何随机对象,并且你不需要转换你取出的值。
有趣的是,.NET Framework中的Dictionary<TKey, TValue>实现基于Hashtable ,正如你可以从源代码中的这条评论中看出的那样:
通用词典是从Hashtable的源文件中复制而来的
资源
Dictionary <<< >>> Hashtable差异:
Synchronized()方法提供线程安全版本 KeyValuePair <<< >>>枚举项: DictionaryEntry Dictionary / Hashtable相似之处:
GetHashCode()方法 类似的 .NET集合(用来代替Dictionary和Hashtable的候选):
ConcurrentDictionary - 线程安全 (可以同时从多个线程安全地访问) HybridDictionary - 优化性能 (对于少数项目以及对许多项目) OrderedDictionary - 可以通过int索引访问值(按照添加项目的顺序) SortedDictionary - 自动排序的项目 StringDictionary - 为字符串强类型化和优化 因为Dictionary是一个泛型类( Dictionary<TKey, TValue> ),所以访问它的内容是类型安全的(也就是说,你不需要使用Object来Object ,就像使用Hashtable )。
比较
var customers = new Dictionary<string, Customer>();
...
Customer customer = customers["Ali G"];
至
var customers = new Hashtable();
...
Customer customer = customers["Ali G"] as Customer;
然而, Dictionary是作为Hashtable内部实现的,所以在技术上它的工作原理是一样的。
上一篇: Why is Dictionary preferred over Hashtable?
下一篇: break vs. continue
