Hashtable vs Dictionary<TKey,TValue>
由于 Hashtable 和 Dictionary 同时存在时,在使用场景上必然存在选择性,并不任何时刻都能相互替代。
1、单线程程序中推荐使用 Dictionary,有泛型优势, 且读取速度较快, 容量利用更充分。
2、多线程程序中推荐使用 Hashtable,默认的 Hashtable 允许单线程写入,多线程读取,对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型。而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护,效率大减。
3、Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便。
推荐使用Dictionary,其原因主要有:
1、Dictionary是类型安全的,这有助于我们写出更健壮更具可读性的代码,而且节省我们强制转化的麻烦。
2、Dictionary是泛行的,当K或V是值类型时,其速度远远超过Hashtable。
处理对象时不需要进行显式或是隐式转型,进行值类型处理时不需要装箱。
所以使用方便一些,而且效率会高一些(编码效率、运行效率),还不太容易出错。
注意:
Dictionary 调用 Add 方法之前使用 ContainsKey 方法测试某个键是否存在,否则得到一个KeyNotFoundException。
当程序频繁尝试字典中不存在的键时,使用 TryGetValue 方法来检索值,这种方法是一种更有效的检索值的方法。

浙公网安备 33010602011771号