IEnumerator.Reset Metoda

Definicja

Ustawia moduł wyliczający na jego pozycję początkową, która jest przed pierwszym elementem w kolekcji.

public:
 void Reset();
public void Reset ();
abstract member Reset : unit -> unit
Public Sub Reset ()

Wyjątki

Kolekcja została zmodyfikowana po utworzeniu modułu wyliczającego.

Przykłady

Poniższy przykład kodu przedstawia implementację IEnumerator interfejsów dla kolekcji niestandardowej. W tym przykładzie Reset nie jest jawnie wywoływana, ale jest implementowana w celu obsługi użycia foreach funkcji (for each w Visual Basic). Ten przykład kodu jest częścią większego przykładu dla interfejsu 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();
            }
        }
    }
}
' When you implement IEnumerable, you must also implement IEnumerator.
Public Class PeopleEnum
    Implements IEnumerator

    Public _people() As Person

    ' Enumerators are positioned before the first element
    ' until the first MoveNext() call.
    Dim position As Integer = -1

    Public Sub New(ByVal list() As Person)
        _people = list
    End Sub

    Public Function MoveNext() As Boolean Implements IEnumerator.MoveNext
        position = position + 1
        Return (position < _people.Length)
    End Function

    Public Sub Reset() Implements IEnumerator.Reset
        position = -1
    End Sub

    Public ReadOnly Property Current() As Object Implements IEnumerator.Current
        Get
            Try
                Return _people(position)
            Catch ex As IndexOutOfRangeException
                Throw New InvalidOperationException()
            End Try
        End Get
    End Property
End Class

Uwagi

Jeśli w kolekcji zostaną wprowadzone zmiany, takie jak dodawanie, modyfikowanie lub usuwanie elementów, zachowanie elementu Reset jest niezdefiniowane.

Metoda Reset jest udostępniana na potrzeby współdziałania modelu COM. Nie musi być wdrażana; Zamiast tego implementator może po prostu zgłosić element NotSupportedException.

Uwagi dotyczące implementowania

Wszystkie wywołania funkcji muszą spowodować Reset() ten sam stan dla modułu wyliczającego. Preferowaną implementacją jest przeniesienie modułu wyliczającego na początek kolekcji przed pierwszym elementem. Spowoduje to unieważnienie modułu wyliczającego, jeśli kolekcja została zmodyfikowana od czasu utworzenia modułu wyliczającego, który jest zgodny z elementami MoveNext() i Current.

Dotyczy

Zobacz też