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 foreach
pętli, pomyślałem, że wspomnę również, że każdy obiekt, który implementuje, IEnumerable
również zapewnia IEnumerator
interfejs za pośrednictwem tej GetEnumerator
metody. 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 foreach
pę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