Что такое итератор?
Итератор возвращает следующий элемент из совокупности элементов.
В C# есть ключевое слово
yield
Использование
yield означает, что это
итератор.
yield может использоваться в методе, операторе, методе доступа get.
Использование
yield в качестве итератора облегчает реализацию
IEnumerable.
C#
Создаем новое C# консольное приложение... и напишем код
using System;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
// Метод BookNames возвращает IEnumerable с помощью yield
public static IEnumerable BookNames()
{
yield return "Властелин Колец";
yield return "Три Богатыря";
yield return "Волшебник Средиземноморья";
}
static void Main()
{
// Перебираем название книг
foreach (string name in BookNames())
Console.WriteLine(name);
// На экране увидим:
// "Властелин Колец"
// "Три Богатыря"
// "Волшебник Средиземноморья"
}
}
}
C#
using System;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
// Наш класс DaysOfWeek реализует IEnumerable с помощью yield
public class DaysOfWeek
{
// поле
private string[] Days = {
"Понедельник",
"Вторник",
"Среда",
"Четверг",
"Пятница",
"Суббота",
"Воскресенье" };
// метод get
public IEnumerable DaysEnum
{
get
{
for (int i = 0; i < Days.Length; i++)
yield return Days[i];
}
}
}
// главный метод программы
static void Main()
{
DaysOfWeek days = new DaysOfWeek();
// Перебираем дни недели
foreach (string name in days.DaysEnum)
Console.WriteLine(name);
// На экране увидим:
// "Понедельник"
// "Вторник"
// ...
// "Воскресенье"
}
}
}
C#
Создаем новое C# консольное приложение... и напишем код
using System;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
// класс DaysOfTheWeek реализует IEnumerable с помощью yield
public class DaysOfWeek : IEnumerable
{
// поле
private string[] Days = {
"Понедельник",
"Вторник",
"Среда",
"Четверг",
"Пятница",
"Суббота",
"Воскресенье" };
// метод
public IEnumerator GetEnumerator()
{
for (int i = 0; i < Days.Length; i++)
yield return Days[i];
}
}
// главный метод программы
static void Main()
{
DaysOfWeek days = new DaysOfWeek();
// Перебираем дни недели
foreach (string name in days)
Console.WriteLine(name);
// На экране увидим:
// "Понедельник"
// "Вторник"
// ...
// "Воскресенье"
}
}
}