2009-10-07 13 views

Odpowiedz

81

Regularny za każdy zrobi:

foreach (var item in collection) 
{ 
    // do your stuff 
} 
+0

To szybciej niż .ElementAt(). Niestety, mój głos jest zamknięty w odpowiedzi Alexy, więc nie mogę tego cofnąć, ale jest to najlepsza odpowiedź. +1 –

5
foreach (var element in instanceOfAClassThatImplelemntIEnumerable) 
{ 

} 
69

Wraz z już proponowanych metod przy użyciu foreach pętlę, myślałem Chciałbym również wspomnieć, że każdy obiekt, który implementuje IEnumerable zapewnia również IEnumerator interfejs za pomocą metody GetEnumerator. Chociaż ta metoda zwykle nie jest potrzebna, można jej użyć do ręcznego iterowania po kolekcjach i jest szczególnie przydatna podczas pisania własnych metod rozszerzania kolekcji.

IEnumerable<T> mySequence; 
using (var sequenceEnum = mySequence.GetEnumerator()) 
{ 
    while (sequenceEnum.MoveNext()) 
    { 
     // Do something with sequenceEnum.Current. 
    } 
} 

Dobrym przykładem jest, gdy chcesz iteracyjne nad dwie sekwencje jednocześnie, co nie jest możliwe przy foreach pętli.

+3

Nie zapomnij wyrzucić modułu wyliczającego. –

+0

@Eric: Tak, dodam to, ponieważ łatwo go przeoczyć. – Noldorin

+1

+1, czasami może się przydać ręczna iteracja. –

29

lub nawet bardzo klasyczny stary sposób moda

for(int i = 0; i < collection.Count(); i++) 
{ 
    string str1 = collection.ElementAt(i); 
    // do your stuff 
} 

może chcesz tę metodę również :-)

+3

Dlaczego ma tak wiele przebojów? Spowoduje to wyliczenie wielokrotności 2n zamiast jednego razu. –

+1

@RomanReiner ponieważ to działa, niektórzy ludzie nie przejmują się wydajnością :) – Khateeb321

+0

@RomanReiner to jest dobry przykład, muszę przypisać każdy element z jednej kolekcji do innej kolekcji, myślę, że nie mogę tego zrobić za pomocą foreach – AminM

Powiązane problemy