Jak przeglądać kolekcję obsługującą IEnumerable?
Odpowiedzi:
Zwykły dla każdego zrobi:
foreach (var item in collection)
{
// do your stuff
}
Oprócz już sugerowanych metod używania foreachpętli, pomyślałem, że wspomnę również, że każdy obiekt, który implementuje, IEnumerablerównież zapewnia IEnumeratorinterfejs za pośrednictwem tej GetEnumeratormetody. Chociaż ta metoda zwykle nie jest konieczna, można jej użyć do ręcznego iterowania po kolekcjach i jest szczególnie przydatna podczas pisania własnych metod rozszerzających dla kolekcji.
IEnumerable<T> mySequence;
using (var sequenceEnum = mySequence.GetEnumerator())
{
while (sequenceEnum.MoveNext())
{
// Do something with sequenceEnum.Current.
}
}
Głównym przykładem jest sytuacja, w której chcesz wykonać iterację w dwóch sekwencjach jednocześnie , co nie jest możliwe w przypadku foreachpętli.
a nawet bardzo klasyczną staromodną metodę
IEnumerable<string> collection = new List<string>() { "a", "b", "c" };
for(int i = 0; i < collection.Count(); i++)
{
string str1 = collection.ElementAt(i);
// do your stuff
}
może spodobałaby Ci się również ta metoda :-)
foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{
}
Może zapomniałeś o czekaniu przed zwrotem kolekcji