Прочитать на английском

Поделиться через


IEnumerator.MoveNext Метод

Определение

Перемещает перечислитель к следующему элементу коллекции.

public bool MoveNext ();

Возвращаемое значение

Значение true, если перечислитель был успешно перемещен к следующему элементу; значение false, если перечислитель достиг конца коллекции.

Исключения

После создания перечислителя семейство было изменено.

Примеры

В следующем примере кода демонстрируется реализация IEnumerator интерфейсов для пользовательской коллекции. В этом примере MoveNext не вызывается явным образом, но реализуется для поддержки foreach использования (for each в Visual Basic). Этот пример кода является частью более крупного примера для IEnumerator интерфейса .

// When you implement IEnumerable, you must also implement IEnumerator.
public class PeopleEnum : IEnumerator
{
    public Person[] _people;

    // Enumerators are positioned before the first element
    // until the first MoveNext() call.
    int position = -1;

    public PeopleEnum(Person[] list)
    {
        _people = list;
    }

    public bool MoveNext()
    {
        position++;
        return (position < _people.Length);
    }

    public void Reset()
    {
        position = -1;
    }

    object IEnumerator.Current
    {
        get
        {
            return Current;
        }
    }

    public Person Current
    {
        get
        {
            try
            {
                return _people[position];
            }
            catch (IndexOutOfRangeException)
            {
                throw new InvalidOperationException();
            }
        }
    }
}

Комментарии

После создания перечислителя или после Reset вызова метода перечислитель позиционируется перед первым элементом коллекции, а первый вызов MoveNext метода перемещает перечислитель по первому элементу коллекции.

Если MoveNext передает конец коллекции, перечислитель размещается после последнего элемента в коллекции и MoveNext возвращает значение false. Если перечислитель находится в этой позиции, последующие вызовы также MoveNext возвращают , false пока не Reset вызывается .

Если в коллекцию вносятся изменения, такие как добавление, изменение или удаление элементов, поведение MoveNext не определено.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел