Dictionary<TKey,TValue>.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 durch die Dictionary<TKey,TValue>Enumerator durchläuft.
public:
System::Collections::Generic::Dictionary<TKey, TValue>::Enumerator GetEnumerator();
public System.Collections.Generic.Dictionary<TKey,TValue>.Enumerator GetEnumerator();
member this.GetEnumerator : unit -> System.Collections.Generic.Dictionary<'Key, 'Value>.Enumerator
Public Function GetEnumerator () As Dictionary(Of TKey, TValue).Enumerator
Gibt zurück
Eine Dictionary<TKey,TValue>.Enumerator Struktur für die Dictionary<TKey,TValue>.
Hinweise
Für die Aufzählung ist jedes Element eine KeyValuePair<TKey,TValue> Struktur, die einen Wert und seinen Schlüssel darstellt.
Die foreach Anweisung der C#-Sprache (For Each in Visual Basic) blendet die Komplexität von Enumerationen aus. Daher wird die Verwendung foreach empfohlen, anstatt den Enumerator direkt zu bearbeiten.
Enumeratoren können verwendet werden, um die Daten in der Auflistung zu lesen, aber sie können nicht zum Ändern der zugrunde liegenden Auflistung verwendet werden.
Zunächst wird der Enumerator vor dem ersten Element in der Auflistung positioniert. An dieser Position Current ist nicht definiert. Sie müssen die MoveNext Methode aufrufen, um den Enumerator zum ersten Element der Auflistung zu wechseln, bevor Sie den Wert von Current.
Die Current Eigenschaft gibt dasselbe Element zurück, bis die MoveNext Methode aufgerufen wird. MoveNext wird auf das nächste Element festgelegt Current .
Wenn MoveNext das Ende der Auflistung übergeben wird, wird der Enumerator nach dem letzten Element in der Auflistung positioniert und MoveNext zurückgegeben false. Wenn sich der Enumerator an dieser Position befindet, werden nachfolgende Aufrufe MoveNext zurückgegeben false. Wenn der letzte zurückgegebene falseCurrent Aufruf MoveNext nicht definiert ist. Sie können nicht erneut auf das erste Element der Auflistung festlegen Current . Stattdessen müssen Sie eine neue Enumerationsinstanz erstellen.
Ein Enumerator bleibt gültig, solange die Auflistung unverändert bleibt. Wenn Änderungen an der Auflistung vorgenommen werden, z. B. das Hinzufügen von Elementen oder das Ändern der Kapazität, wird der Enumerator unwiederbringlich ungültig und der nächste Aufruf an MoveNext oder IEnumerator.Reset löst einen InvalidOperationException.
.NET Core 3.0+ nur: Die einzigen Mutating-Methoden, die keine Enumerationen ungültig machen, sind Remove und Clear.
Der Enumerator hat keinen exklusiven Zugriff auf die Sammlung; Daher ist das Aufzählen durch eine Sammlung intrinsisch keine threadsichere Prozedur. Um die Threadsicherheit während der Enumeration zu gewährleisten, können Sie die Sammlung während der gesamten Enumeration sperren. Damit auf die Sammlung über mehrere Threads zum Lesen und Schreiben zugegriffen werden kann, müssen Sie eine eigene Synchronisierung implementieren.
Standardimplementierungen von Auflistungen im System.Collections.Generic Namespace werden nicht synchronisiert.
Diese Methode ist ein O(1)-Vorgang.