IEnumerator.Reset Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.