KeyValuePair VS DictionaryEntry

KeyValuePair是通用版本和DictionaryEntry之间的区别是什么?

为什么在genericsDictionary类中使用KeyValuePair而不是DictionaryEntry?

KeyValuePair<TKey,TValue>用于替代DictionaryEntry因为它被生成。 使用KeyValuePair<TKey,TValue>的好处是我们可以给编译器提供更多关于我们字典内容的信息。 展开Chris的例子(我们有两个包含<string, int>对的字典)。

 Dictionary<string, int> dict = new Dictionary<string, int>(); foreach (KeyValuePair<string, int> item in dict) { int i = item.Value; } Hashtable hashtable = new Hashtable(); foreach (DictionaryEntry item in hashtable) { // Cast required because compiler doesn't know it's a <string, int> pair. int i = (int) item.Value; } 

KeyValuePair <T,T>用于遍历Dictionary <T,T>。 这是.Net 2(以及之后)的做事方式。

DictionaryEntry用于遍历HashTables。 这是.Net 1的做事方式。

这是一个例子:

 Dictionary<string, int> MyDictionary = new Dictionary<string, int>(); foreach (KeyValuePair<string, int> item in MyDictionary) { // ... } Hashtable MyHashtable = new Hashtable(); foreach (DictionaryEntry item in MyHashtable) { // ... }