[COLOR=teal]IEnumarable[/COLOR]<[COLOR=#008080]какой_то_тип[COLOR=black]>[/COLOR] [/COLOR]iEnumerableInst = [COLOR=blue]new[/COLOR] [COLOR=#008080]какой_то_тип[/COLOR][COLOR=black][10];[/COLOR]
[COLOR=green]//тут код будет выстреливать NullReferenceException, если [/COLOR]
[COLOR=green]//какой_то_тип - ссылочный, поэтому нужно бы еще заполнить каждый элемент массива[/COLOR]
[COLOR=blue]foreach[/COLOR] ([COLOR=teal]какой_то_тип[/COLOR] var [COLOR=blue]in[/COLOR] iEnumerableInst)
{
[COLOR=teal]Console[/COLOR].WriteLine(var.ToString());
}
Как правильно пользоваться IEnumerable<>?
public IEnumerator<какой-то тип> GetEnumerator();
IEnumerator IEnumerable.GetEnumerator();
Как правильно испольовать этот интерфейс?
Код:
Цитата: Ordos
В этом интерфейсе над реализовать две функции:
public IEnumerator<какой-то тип> GetEnumerator();
IEnumerator IEnumerable.GetEnumerator();
Как правильно испольовать этот интерфейс?
public IEnumerator<какой-то тип> GetEnumerator();
IEnumerator IEnumerable.GetEnumerator();
Как правильно испольовать этот интерфейс?
Как вариант, можно положиться на компилятор, и создать генератор.
Вот идея:
Код:
public IEnumerable<int> Integer_Generator() {
for (int i = 0; i < 10; ++i) {
yield return i;
}
yield return 10;
yield return 11;
}
// используем как обычную функцию
foreach (int i in Integer_Generator()) {
Console.WriteLine(i.ToString());
}
for (int i = 0; i < 10; ++i) {
yield return i;
}
yield return 10;
yield return 11;
}
// используем как обычную функцию
foreach (int i in Integer_Generator()) {
Console.WriteLine(i.ToString());
}
Также существует конструкция yield break, она позволяет выполнить выход из генератора.