- 最后登录
- 2019-12-2
- 注册时间
- 2012-8-25
- 阅读权限
- 90
- 积分
- 34660
- 纳金币
- 38268
- 精华
- 111
|
单线程程序中推荐使用Dictionary,有泛型优势,且读取速度较快,容量利用更充分。
多线程程序中推荐使用Hashtable,默认的Hashtable允许单线程写入,多线程读取,对Hashtable进一步调用Synchronized()可以获得完全线程安全的类型,而Dictionary非线程安全,必须人为使用Lock语句进行保护,效率大减。
ps:在内聚函数中使用Dictionary,不会有多线程读取情况。在全局数据使用Hashtable,可能存在多线程读取。
Dictionary有按插入顺序排列数据的特性(注:但当调用Remove()删除过节点后顺序被打乱),因此在需要体现顺序的情景中使用Dictionary能获得一定方便。
Hashtable类和Dictionary<Of<(TKey, TValue)>>泛指类实现IDictionary接口。
对于值类型,特定类型(不包括Object)的Dictionary的性能优于Hashtable,这是因为Hashtable的元素属于Object类型,所以在存储或检索值类型时通常发生装箱和拆箱操作。
Hashtable中keyvalue键值对均为object类型,所以Hashable可以支持任何类型的keyvalue键值对。
PS:Hashtable在存储值类型时,考虑使用Dictionary
Dictionary使用索引器取值时,如果键不存在就会引发异常,可使用ContarnsKey()来判断,经常取值最好用TryGetValue方法来获取集合中对应的键值。
|
|