b/w Hashtable,Dictionary和KeyValuePair有什么区别?

Nik*_*wal 25 .net c# dictionary hashtable key-value

我在代码中使用Dictionary但我的同事使用Hashtable.MSDN表示他们在密钥值对上工作,Hashtable和字典的例子在MSDN上是相同的.

那么它们彼此之间有多么不同?哪种是最好的还是适合不同的场合?

das*_*ght 25

Hashtable是一个无类型的关联容器,它使用DictionaryEntryclass通过其键值对返回枚举结果.

Dictionary<K,T>HashtableC#2.0中引入的通用替代品.它使用KeyValuePair<K,T>通用对象来表示其键值对.

Hashtable这些天你应该看到的唯一地方是在引入泛型之前必须在.NET 1.1上运行的遗留代码.出于兼容性原因,它一直存在,但您应该尽可能地选择Dictionary<K,T>.


Chr*_*ain 17

KeyValuePairHashtable(或Dictionary)存储的数据单位.它们并不相同.

键值对包含单个键和单个值.字典或散列表包含许多键与其关联值的映射.

KeyValuePair当你想将两个相关信息作为一个单元存储时,这是很有用的,特别是当一个信息以识别方式与另一个相关时(例如1234 =>"David Smith").它们也是你在迭代字典时得到的东西.在.NET 4.0中,这些实际上仅用于在Dictionary中内部使用 - 引入了Tuple类用于通用目的.

之间的区别HashtableDictionaryHashtable不是一个通用类-两个它的键和值的类型Object. Dictionary是通用的,通常应该用于Hashtable任何新的开发.


hp.*_*hp. 5

字典是类型化的哈希表.如果您知道键和值的数据类型,请出于性能原因使用字典(避免强制转换).