2011-08-08 4 views
2

누구나 IDictionaryEnumerator가 HashTable을 루핑하기 위해 선호되는 이유를 말해 줄 수 있습니까?HashTable 용 IEnumerator?

IEnumerator와 다른 점은 무엇입니까?

언제 사용하나요?

답변

4

IDictionaryEnumerator를 사용하면 현재 항목의 키와 값에 모두 액세스 할 수 있습니다. 참고로 IDictionaryEnumerator는 IEnumerator이므로 foreach에서 방금 사용하는 경우 range 변수가 DictionaryEntry이기 때문에이 사실을 알 수 있습니다. IDictionaryEnumerator를 수동으로 작업하는 경우 현재와 마찬가지로 Key 및 Value 속성이 있음을 알 수 있습니다.

Hashtable을 반복 할 때 '선호되는'것은 아닙니다. Hashtable을 열거하면 값뿐만 아니라 키 - 값 쌍을 열거하고 IDictionaryEnumerator가이를 나타냅니다.

0

IDictionaryEnumerator는 키/값 쌍의 컬렉션을 열거하기 위해 특별히 설계되었습니다. 현재 항목의 키와 값에 액세스 할 수 있습니다 (다른 항목 중에서는 documentation 참조). IEnumerator는 현재 값만 제공합니다.

7

요점은 해시 테이블/사전에 쌍이이고 .Key.Value 인 것을 열거한다는 점입니다. 이것은 Dictionary<TKey,TValue>IEnumerable<KeyValuePair<TKey, TValue>>을 구현하기 때문에 2.0에서 약간 부적절합니다.

이 인터페이스는 단순히 몇 가지 경우에 키/값에 액세스하는 것이 더 편리합니다. - 경우

foreach(DictionaryEntry pair in hashTable) { 
    .... use pair.Key and pair.Value 
} 
+0

이 인터페이스는 단순히 몇 가지 경우에 키/값에 액세스하는 것이 더 편리합니다 :

당신을 통해 (IDictionaryEnumerator를 사용하지 않고) Hashtable에서 동일한을 달성 할 수 있습니까? 예제를 인용 할 수 있습니까? – AdamFo