Итератор: различия между версиями

2 байта добавлено ,  3 года назад
м (отмена правки 75453736 участника Yanpas (обс))
Итераторы в [[.NET Framework]] называются 'перечислителями' (enumerators) и представлены интерфейсом <code>IEnumerator</code>. <code>IEnumerator</code> реализует метод <code>MoveNext()</code>, который переходит к следующему элементу и указывает достигнут ли конец коллекции; свойство <code>Current</code> служит для получения значения указываемого элемента; дополнительный метод <code>Reset()</code> возвращает перечислитель на его исходную позицию. Перечислитель первоначально указывает на специальное значение перед первым элементом, поэтому вызов <code>MoveNext()</code> необходим для начала итерации.
 
Перечислители обычно передаются вызовом метода <code>GetEnumerator()</code> объекта, реализующего интерфейс <code>IEnumerable</code>. Классы контейнеров обычно реализуют этот интерфейс. Тем не менее, выражение [[Цикл просмотра|foreach]] в языке [[C Sharp|C#]] может оперировать любым объектом, поддержвающимподдерживающим подобный метод, даже если он не реализует <code>IEnumerable</code>. Оба интерфейса были расширены в [[Обобщенное программирование|обобщенных]] версиях [[.NET Framework#.NET Framework 2.0|.NET 2.0]].
 
Следующий пример показывает простое использование итераторов в C# 2.0:
Анонимный участник