誰能告訴我爲什麼IDictionaryEnumerator首選循環HashTable。IEnumerator for HashTable?
雖然它是從它派生出來的,它與IEnumerator有什麼不同?
何時使用哪個?
誰能告訴我爲什麼IDictionaryEnumerator首選循環HashTable。IEnumerator for HashTable?
雖然它是從它派生出來的,它與IEnumerator有什麼不同?
何時使用哪個?
IDictionaryEnumerator允許您訪問鍵和當前條目的值。正如你注意到的,IDictionaryEnumerator是一個IEnumerator,所以如果你只是在foreach中使用它,你只會注意到這一點,因爲range變量是一個DictionaryEntry;但如果您手動使用IDictionaryEnumerator,則會發現它具有Key和Value屬性以及Current。
它不是什麼讓它成爲循環Hashtable的'首選' - 它只是如果你枚舉一個Hashtable,你枚舉鍵值對,而不僅僅是值,IDictionaryEnumerator表示這一點。
IDictionaryEnumerator專門用於枚舉鍵/值對的集合。它使您可以訪問當前條目的鍵和值(其中包括其他內容,如documentation所示)。 IEnumerator只會給你當前的值。
重點是散列表/字典枚舉對,與.Key
和.Value
。這個從2.0開始有些爭議,因爲Dictionary<TKey,TValue>
實現了IEnumerable<KeyValuePair<TKey, TValue>>
這更清楚了。
這個接口只是簡單地在少數情況下訪問鍵/值更方便。
可以實現Hashtable
相同(不使用IDictionaryEnumerator
)通過:
foreach(DictionaryEntry pair in hashTable) {
.... use pair.Key and pair.Value
}
這個接口就是讓您更方便的在少數情況下訪問鍵/值 - 這情況?你能舉出例子嗎? – AdamFo