제네릭 버전 인 KeyValuePair와 DictionaryEntry의 차이점은 무엇입니까?
일반 Dictionary 클래스에서 DictionaryEntry 대신 KeyValuePair가 사용되는 이유는 무엇입니까?
답변
KeyValuePair<TKey,TValue>
생성 DictionaryEntry
되기 때문에 대신 사용됩니다 . a 사용의 장점은 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는 HashTable을 반복하기위한 것입니다. 이것이 .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)
{
// ...
}