SortedDictionary<TKey,TValue>.GetEnumerator Methode

Definition

Gibt einen Enumerator zurück, der die SortedDictionary<TKey,TValue> durchläuft.

public:
 System::Collections::Generic::SortedDictionary<TKey, TValue>::Enumerator GetEnumerator();
public System.Collections.Generic.SortedDictionary<TKey,TValue>.Enumerator GetEnumerator ();
member this.GetEnumerator : unit -> System.Collections.Generic.SortedDictionary<'Key, 'Value>.Enumerator
Public Function GetEnumerator () As SortedDictionary(Of TKey, TValue).Enumerator

Gibt zurück

SortedDictionary<TKey,TValue>.Enumerator

Ein SortedDictionary<TKey,TValue>.Enumerator für die SortedDictionary<TKey,TValue>.

Hinweise

Für Aufzählungszwecke 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 C++, For Each in Visual Basic) blendet die Komplexität der Aufzählungen 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.

Das Wörterbuch wird in einer sortierten Reihenfolge mithilfe einer internen Struktur verwaltet. Jedes neue Element wird an der richtigen Sortierposition positioniert, und die Struktur wird angepasst, um die Sortierreihenfolge beizubehalten, wenn ein Element entfernt wird. Beim Aufzählen wird die Sortierreihenfolge beibehalten.

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 Aufzählungsator zum ersten Element der Auflistung zu wechseln, bevor Sie den Wert lesen Current.

Die Current Eigenschaft gibt dasselbe Element zurück, bis die MoveNext Methode 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 Current nicht erneut auf das erste Element der Auflistung festlegen, sondern müssen eine neue Enumeratorinstanz erstellen.

Ein Enumerator bleibt gültig, solange die Auflistung unverändert bleibt. Wenn Änderungen an der Auflistung vorgenommen werden, z. B. Hinzufügen, Ändern oder Löschen von Elementen, wird der Aufzählungsator unwiderruflich ungültig und der nächste Aufruf MoveNext IEnumerator.Reset oder löst einen InvalidOperationException.

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.

Diese Methode ist ein O(log n)-Vorgang, wobei n gezählt wird.

Gilt für

Siehe auch