Nik*_*wal 25 .net c# dictionary hashtable key-value
我在代码中使用Dictionary但我的同事使用Hashtable.MSDN表示他们在密钥值对上工作,Hashtable和字典的例子在MSDN上是相同的.
那么它们彼此之间有多么不同?哪种是最好的还是适合不同的场合?
das*_*ght 25
Hashtable
是一个无类型的关联容器,它使用DictionaryEntry
class通过其键值对返回枚举结果.
Dictionary<K,T>
是Hashtable
C#2.0中引入的通用替代品.它使用KeyValuePair<K,T>
通用对象来表示其键值对.
Hashtable
这些天你应该看到的唯一地方是在引入泛型之前必须在.NET 1.1上运行的遗留代码.出于兼容性原因,它一直存在,但您应该尽可能地选择Dictionary<K,T>
.
Chr*_*ain 17
KeyValuePair
是Hashtable
(或Dictionary
)存储的数据单位.它们并不相同.
键值对包含单个键和单个值.字典或散列表包含许多键与其关联值的映射.
KeyValuePair
当你想将两个相关信息作为一个单元存储时,这是很有用的,特别是当一个信息以识别方式与另一个相关时(例如1234 =>"David Smith").它们也是你在迭代字典时得到的东西.在.NET 4.0中,这些实际上仅用于在Dictionary中内部使用 - 引入了Tuple类用于通用目的.
之间的区别Hashtable
和Dictionary
是Hashtable
不是一个通用类-两个它的键和值的类型Object
. Dictionary
是通用的,通常应该用于Hashtable
任何新的开发.