C# 哈希表的IEnumerator?

C# 哈希表的IEnumerator?,c#,linq,C#,Linq,谁能告诉我为什么IDictionaryEnumerator更适合循环哈希表 虽然它是从IEnumerator派生出来的,但它与IEnumerator有何不同 何时使用哪个?IDictionaryEnumerator允许您访问当前条目的键和值。正如您所注意到的,IDictionaryEnumerator是IEnumerator,因此如果您只是在foreach中使用它,您只会注意到这一点,因为范围变量是DictionaryEntry;但如果您手动使用IDictionaryEnumerator,您会发

谁能告诉我为什么IDictionaryEnumerator更适合循环哈希表

虽然它是从IEnumerator派生出来的,但它与IEnumerator有何不同


何时使用哪个?

IDictionaryEnumerator允许您访问当前条目的键和值。正如您所注意到的,IDictionaryEnumerator是IEnumerator,因此如果您只是在foreach中使用它,您只会注意到这一点,因为范围变量是DictionaryEntry;但如果您手动使用IDictionaryEnumerator,您会发现它具有键和值属性以及当前属性


这并不是说它是循环哈希表的“首选”——只是如果你枚举一个哈希表,你在枚举键值对,而不仅仅是值,IDictionaryEnumerator代表了这一点。

IDictionaryEnumerator是专门为枚举键值对集合而设计的。它允许您访问当前条目的键和值(以及其他内容,如中所示)。IEnumerator只提供当前值。

关键是哈希表/字典使用
.Key
.value
枚举对。这与2.0相比有点毫无意义,因为
Dictionary
实现了
IEnumerable
,后者更清晰


在少数情况下,此接口只会使访问键/值更加方便

您可以通过以下方式在
哈希表
(无需使用
IDictionaryEnumerator
)中实现相同的功能:


这个接口只是在少数情况下使访问键/值更加方便——哪些情况?你能举个例子吗?
foreach(DictionaryEntry pair in hashTable) {
     .... use pair.Key and pair.Value
}