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

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


IEnumerator.Reset Метод

Определение

Устанавливает перечислитель в его начальное положение, т. е. перед первым элементом коллекции.

public void Reset ();

Исключения

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

Перечислитель не поддерживает сброс.

Примеры

В следующем примере кода демонстрируется реализация IEnumerator интерфейсов для пользовательской коллекции. В этом примере Reset не вызывается явным образом, но реализуется для поддержки 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 не определено.

Метод Reset предоставляется для com-взаимодействия. Он не обязательно должен быть реализован; Вместо этого реализующий объект может просто создать исключение NotSupportedException.

Примечания для тех, кто реализует этот метод

Все вызовы должны приводить к Reset() одному и тому же состоянию для перечислителя. Предпочтительной реализацией является перемещение перечислителя в начало коллекции перед первым элементом. Это делает перечислитель недействительным, если коллекция была изменена с момента создания перечислителя, что согласуется с MoveNext() и Current.

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

Продукт Версии
.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

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