Как пройти через коллекцию, поддерживающую IEnumerable?
Ответы:
Подойдет обычный для каждого:
foreach (var item in collection)
{
// do your stuff
}
Наряду с уже предложенными методами использования foreach
цикла, я подумал, что я также упомянул, что любой объект, который реализует, IEnumerable
также предоставляет IEnumerator
интерфейс через GetEnumerator
метод. Хотя в этом методе обычно нет необходимости, его можно использовать для ручного перебора коллекций и особенно полезно при написании собственных методов расширения для коллекций.
IEnumerable<T> mySequence;
using (var sequenceEnum = mySequence.GetEnumerator())
{
while (sequenceEnum.MoveNext())
{
// Do something with sequenceEnum.Current.
}
}
Ярким примером является случай, когда вы хотите перебрать две последовательности одновременно , что невозможно с foreach
циклом.
или даже очень классический старомодный метод
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
}
возможно, вам тоже понравится этот метод :-)
foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{
}
Возможно, вы забыли об ожидании перед возвратом своей коллекции