Как перебрать коллекцию, которая поддерживает IEnumerable? - PullRequest
73 голосов
/ 07 октября 2009

Как перебрать коллекцию, которая поддерживает IEnumerable?

Ответы [ 4 ]

123 голосов
/ 07 октября 2009

Регулярно для каждого сделаю:

foreach (var item in collection)
{
    // do your stuff   
}
80 голосов
/ 07 октября 2009

Наряду с уже предложенными методами использования цикла foreach я подумал также упомянуть, что любой объект, который реализует IEnumerable, также предоставляет интерфейс IEnumerator через метод GetEnumerator. Хотя этот метод обычно не требуется, его можно использовать для ручной итерации по коллекциям, и он особенно полезен при написании собственных методов расширения для коллекций.

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

Главный пример - это когда вы хотите итерировать по двум последовательностям одновременно , что невозможно при цикле foreach.

38 голосов
/ 18 февраля 2013

или даже очень классический старомодный метод

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   
}

может быть, вы хотели бы этот метод также: -)

7 голосов
/ 07 октября 2009
foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{

}
...