2010-10-05 70 views
1

這行代碼混淆了我:什麼是枚舉器在一個對象中?

List<string> keys = new List<string>(); 
IDictionaryEnumerator ca = cache.GetEnumerator(); 
while (ca.MoveNext()) 
{ 
    keys.Add(ca.Key.ToString()); 
} 

什麼是枚舉?它是否連接到枚舉?我試圖找到一個關於統計員的教程,但沒有成功。希望有人會耐心向我解釋。

+0

可能的重複[任何人都可以向我解釋IEnumerable和IEnumerator?](http://stackoverflow.com/questions/558304/can-anyone-explain-ienumerable-and-ienumerator-to-me) – 2010-10-05 17:26:48

+0

@Kirk:感謝您的鏈接。這很棒。 – sandalone 2010-10-06 12:05:43

回答

1

你沒有表現什麼類型的「緩存」實際上是,但你的代碼等價於:

foreach(var ca in cache) 
{ 
    keys.Add(ca.Key.ToString(); 
} 

foreach()使用枚舉爲好,但清潔通過編譯器產生的代碼。

+0

我明白了。哪一個更快?你知道嗎? – sandalone 2010-10-06 10:26:23

+0

@askmo:如果你不得不問,也不要使用。但是這兩個是一樣的。 – 2010-10-06 11:07:35