2010-10-05 2 views
1

Эта строка кода путает меня:Что такое перечислитель в объекте?

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

Что такое Enumerator? Связано ли это с перечислениями? Я пытаюсь найти учебник по счетчикам, но безуспешно. Надеюсь, у кого-то будет терпение, чтобы объяснить это мне.

+0

Возможный дубликат [Может ли кто-нибудь объяснить IEnumerable и IEnumerator для меня?] (Http://stackoverflow.com/questions/558304/can-anyone-explain-ienumerable-and-ienumerator-to-me) –

+0

@Kirk: Спасибо за ссылку. Здорово. – sandalone

ответ

1

Вы не показывают, какой тип «кэш» на самом деле, но ваш код эквивалентен:

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

foreach() использует Enumerator как хорошо, но уборщик через сгенерированного компилятором кода.

+0

Я вижу. Какой из них быстрее? Вы это знаете? – sandalone

+0

@askmo: Если вы должны спросить, не используйте. Но эти 2 одинаковы. –