IEnumerator.Reset Methode

Definitie

Hiermee stelt u de enumerator in op de oorspronkelijke positie, die vóór het eerste element in de verzameling valt.

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

Uitzonderingen

De verzameling is gewijzigd nadat de enumerator is gemaakt.

De enumerator biedt geen ondersteuning voor opnieuw instellen.

Voorbeelden

In het volgende codevoorbeeld ziet u de implementatie van de IEnumerator interfaces voor een aangepaste verzameling. In dit voorbeeld wordt Reset niet expliciet aangeroepen, maar het wordt geïmplementeerd ter ondersteuning van het gebruik van foreach (for each in Visual Basic). Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de IEnumerator interface.

// 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

Opmerkingen

Als er wijzigingen worden aangebracht in de verzameling, zoals het toevoegen, wijzigen of verwijderen van elementen, is het gedrag van Reset niet-gedefinieerd.

De Reset methode wordt geboden voor COM-interoperabiliteit. Het hoeft niet noodzakelijkerwijs te worden geïmplementeerd; In plaats daarvan kan de implementeerfunctie gewoon een NotSupportedException.

Notities voor uitvoerders

Alle aanroepen moeten Reset() dezelfde status hebben voor de enumerator. De voorkeursuitvoering is het verplaatsen van de enumerator naar het begin van de verzameling, vóór het eerste element. Hierdoor wordt de enumerator ongeldig gemaakt als de verzameling is gewijzigd sinds de enumerator is gemaakt, wat consistent is met MoveNext() en Current.

Van toepassing op

Zie ook