HashSet<T>.IEnumerable<T>.GetEnumerator Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt einen Enumerator zurück, der eine Auflistung durchläuft.
virtual System::Collections::Generic::IEnumerator<T> ^ System.Collections.Generic.IEnumerable<T>.GetEnumerator() = System::Collections::Generic::IEnumerable<T>::GetEnumerator;
System.Collections.Generic.IEnumerator<T> IEnumerable<T>.GetEnumerator ();
abstract member System.Collections.Generic.IEnumerable<T>.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<'T>
override this.System.Collections.Generic.IEnumerable<T>.GetEnumerator : unit -> System.Collections.Generic.IEnumerator<'T>
Function GetEnumerator () As IEnumerator(Of T) Implements IEnumerable(Of T).GetEnumerator
Gibt zurück
Ein IEnumerator<T>-Objekt, das zum Durchlaufen der Auflistung verwendet werden kann.
Implementiert
Hinweise
Die foreach
-Anweisung der C#-Sprache (for each
in C++, For Each
in Visual Basic) blendet die Komplexität von Enumeratoren aus. Daher empfiehlt es sich, foreach
zu verwenden und den Enumerator nicht direkt zu ändern.
Mit Enumeratoren können die Daten in der Auflistung zwar gelesen, jedoch nicht zum Ändern der zugrunde liegenden Auflistung verwendet werden.
Zu Beginn wird der Enumerator vor das erste Element in der Auflistung positioniert. An dieser Position ist die Current -Eigenschaft nicht definiert. Daher müssen Sie die MoveNext -Methode aufrufen, um den Enumerator auf das erste Element der Auflistung vor dem Lesen des Werts von Currentzu weiterentwickeln.
Die Current -Eigenschaft gibt dasselbe Objekt zurück, bis MoveNext aufgerufen wird. MoveNext legt Current auf das nächste Element fest.
Wenn MoveNext das Ende der Auflistung übergibt, wird der Enumerator hinter dem letzten Element in der Auflistung platziert, und MoveNext gibt false
zurück. Wenn sich der Enumerator an dieser Position befindet, geben nachfolgende Aufrufe von MoveNext auch false
zurück. Wenn der letzte Aufruf MoveNext zurückgegebene false
, Current ist nicht definiert. Sie können nicht erneut auf das erste Element der Auflistung festlegen Current . Stattdessen müssen Sie ein neues Enumeratorobjekt erstellen.
Ein Enumerator bleibt gültig, solange die Auflistung unverändert bleibt. Werden an der Auflistung Änderungen wie z. B. Hinzufügen, Bearbeiten oder Entfernen von Elementen vorgenommen, verliert der Enumerator unwiederbringlich seine Gültigkeit und sein Verhalten ist nicht definiert.
Der Enumerator hat keinen exklusiven Zugriff auf die Auflistung; daher ist die Enumeration einer Auflistung systembedingt kein threadsicheres Verfahren. Um während der Enumeration Threadsicherheit zu garantieren, können Sie die Auflistung während der gesamten Enumeration sperren. Um den Lese- und Schreibzugriff auf diese Auflistung durch mehrere Threads zuzulassen, müssen Sie eine eigene Synchronisierung implementieren.
Standardimplementierungen der Auflistungen im System.Collections.Generic-Namespace werden nicht synchronisiert.
Bei dieser Methode handelt es sich um einen O(1)-Vorgang.