Câu trả lời:
KeyValuePair<TKey,TValue>
được sử dụng thay DictionaryEntry
vì nó được tổng quát hóa. Ưu điểm của việc sử dụng a KeyValuePair<TKey,TValue>
là chúng ta có thể cung cấp cho trình biên dịch thêm thông tin về những gì có trong từ điển của chúng ta. Để mở rộng về ví dụ của Chris (trong đó chúng tôi có hai từ điển chứa <string, int>
các cặp).
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> dùng để lặp lại từ điển <T, T>. Đây là cách hoạt động của .Net 2 (trở đi).
DictionaryEntry dùng để lặp qua HashTables. Đây là cách thực hiện .Net 1.
Đây là một ví dụ:
Dictionary<string, int> MyDictionary = new Dictionary<string, int>();
foreach (KeyValuePair<string, int> item in MyDictionary)
{
// ...
}
Hashtable MyHashtable = new Hashtable();
foreach (DictionaryEntry item in MyHashtable)
{
// ...
}