Dictionary<TKey,TValue>.GetEnumerator Method

Definition

Gibt einen Enumerator zurück, der Dictionary<TKey,TValue> durchläuft.Returns an enumerator that iterates through the Dictionary<TKey,TValue>.

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

Returns

Dictionary<TKey,TValue>.Enumerator

Eine Dictionary<TKey,TValue>.Enumerator-Struktur für das Dictionary<TKey,TValue>.A Dictionary<TKey,TValue>.Enumerator structure for the Dictionary<TKey,TValue>.

Remarks

Für Aufzählungs Zwecke ist jedes Element eine KeyValuePair<TKey,TValue> Struktur, die einen Wert und seinen Schlüssel darstellt.For purposes of enumeration, each item is a KeyValuePair<TKey,TValue> structure representing a value and its key.

Die foreach-Anweisung der C# Sprache (for each in C++, For Each in Visual Basic) verbirgt die Komplexität der Enumeratoren.The foreach statement of the C# language (for each in C++, For Each in Visual Basic) hides the complexity of enumerators. Daher empfiehlt es sich, foreach zu verwenden und den Enumerator nicht direkt zu ändern.Therefore, using foreach is recommended, instead of directly manipulating the enumerator.

Mit Enumeratoren können die Daten in der Auflistung zwar gelesen, jedoch nicht zum Ändern der zugrunde liegenden Auflistung verwendet werden.Enumerators can be used to read the data in the collection, but they cannot be used to modify the underlying collection.

Zu Beginn wird der Enumerator vor das erste Element in der Auflistung positioniert.Initially, the enumerator is positioned before the first element in the collection. An dieser Position ist Current nicht definiert.At this position, Current is undefined. Sie müssen die MoveNext-Methode aufzurufen, um den Enumerator vor dem Lesen des Werts von Currentauf das erste Element der Auflistung zu setzen.You must call the MoveNext method to advance the enumerator to the first element of the collection before reading the value of Current.

Die Current-Eigenschaft gibt dasselbe Element zurück, bis die MoveNext-Methode aufgerufen wird.The Current property returns the same element until the MoveNext method is called. MoveNext legt Current auf das nächste Element fest.MoveNext sets Current to the next element.

Wenn MoveNext das Ende der Auflistung übergibt, wird der Enumerator hinter dem letzten Element in der Auflistung platziert, und MoveNext gibt false zurück.If MoveNext passes the end of the collection, the enumerator is positioned after the last element in the collection and MoveNext returns false. Wenn sich der Enumerator an dieser Position befindet, geben nachfolgende Aufrufe von MoveNext auch false zurück.When the enumerator is at this position, subsequent calls to MoveNext also return false. Wenn der letzte Aufruf MoveNext zurückgegebene false, Current ist nicht definiert.If the last call to MoveNext returned false, Current is undefined. Sie können Current nicht erneut auf das erste Element der Auflistung festlegen, sondern müssen eine neue Enumeratorinstanz erstellen.You cannot set Current to the first element of the collection again; you must create a new enumerator instance instead.

Ein Enumerator bleibt gültig, solange die Auflistung unverändert bleibt.An enumerator remains valid as long as the collection remains unchanged. 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 aufrufungs MoveNext oder IEnumerator.Reset löst eine InvalidOperationExceptionaus.If changes are made to the collection, such as adding elements or changing the capacity, the enumerator is irrecoverably invalidated and the next call to MoveNext or IEnumerator.Reset throws an InvalidOperationException.

Nur .net Core 3.0 +: die einzigen veränderbaren Methoden, die Enumeratoren nicht für ungültig erklären, sind Remove und Clear..NET Core 3.0+ only: The only mutating methods which do not invalidate enumerators are Remove and Clear.

Der Enumerator hat keinen exklusiven Zugriff auf die Auflistung; daher ist die Enumeration einer Auflistung systembedingt kein threadsicheres Verfahren.The enumerator does not have exclusive access to the collection; therefore, enumerating through a collection is intrinsically not a thread-safe procedure. Um während der Enumeration Threadsicherheit zu garantieren, können Sie die Auflistung während der gesamten Enumeration sperren.To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration. Um den Lese- und Schreibzugriff auf diese Auflistung durch mehrere Threads zuzulassen, müssen Sie eine eigene Synchronisierung implementieren.To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.

Standardimplementierungen der Auflistungen im System.Collections.Generic-Namespace werden nicht synchronisiert.Default implementations of collections in the System.Collections.Generic namespace are not synchronized.

Diese Methode ist ein O (1)-Vorgang.This method is an O(1) operation.

Applies to

See also