Интерфейс IEnumerator
Интерфейс IEnumerator<T> задаёт
методы MoveNext
и свойство Current.
Перечислитель получают из IEnumerable<T>.
Синтаксис
bool MoveNext();
T Current { get; }
Пример
Давайте пройдём список через IEnumerator:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> nums = new List<int> {1, 2, 3, 4, 5};
IEnumerator<int> en = nums.GetEnumerator();
while (en.MoveNext())
{
Console.Write(en.Current + " ");
}
}
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте прочитаем первый элемент после MoveNext:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> nums = new List<int> {1, 2, 3, 4, 5};
IEnumerator<int> en = nums.GetEnumerator();
Console.WriteLine(en.MoveNext());
Console.WriteLine(en.Current);
}
}
Результат выполнения кода:
True
1
Пример
Давайте дойдём до конца перечисления:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> nums = new List<int> {1, 2, 3};
IEnumerator<int> en = nums.GetEnumerator();
while (en.MoveNext()) { }
Console.WriteLine(en.MoveNext());
}
}
Результат выполнения кода:
False
Пример
Давайте обойдём строки:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> items = new List<string> {"a", "b", "c", "d", "e"};
IEnumerator<string> en = items.GetEnumerator();
en.MoveNext();
Console.WriteLine(en.Current);
}
}
Результат выполнения кода:
"a"
Смотрите также
-
интерфейс
IEnumerable,
который выдаёт перечислитель -
метод
MoveNext,
который переходит к следующему элементу -
свойство
Current,
которое возвращает текущий элемент -
метод
ForEach,
который обходит список без явного перечислителя