Метод MoveNext
Метод MoveNext интерфейса
IEnumerator<T>
переходит к следующему элементу. Возвращает
true, если элемент есть, и false
после последнего.
Синтаксис
bool hasNext = enumerator.MoveNext();
Пример
Давайте вызовем 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();
int n = 0;
while (en.MoveNext()) n++;
Console.WriteLine(n);
}
}
Результат выполнения кода:
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());
}
}
Результат выполнения кода:
True
Пример
Давайте получим False после конца:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> nums = new List<int> {1};
IEnumerator<int> en = nums.GetEnumerator();
en.MoveNext();
Console.WriteLine(en.MoveNext());
}
}
Результат выполнения кода:
False
Пример
Давайте для пустого списка сразу получим False:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> nums = new List<int>();
IEnumerator<int> en = nums.GetEnumerator();
Console.WriteLine(en.MoveNext());
}
}
Результат выполнения кода:
False
Смотрите также
-
свойство
Current,
которое читают после успешного MoveNext -
интерфейс
IEnumerator,
который объединяет MoveNext и Current -
интерфейс
IEnumerable,
который создаёт перечислитель -
класс
List,
который можно обходить через MoveNext