Dictionary<TKey, TValue>.KeyCollection.Enumerator-Struktur
Aktualisiert: November 2007
Listet die Elemente einer Dictionary<TKey, TValue>.KeyCollection auf.
Assembly: mscorlib (in mscorlib.dll)
[SerializableAttribute] public struct Enumerator : IEnumerator<TKey>, IDisposable, IEnumerator
/** @attribute SerializableAttribute */ public final class Enumerator extends ValueType implements IEnumerator<TKey>, IDisposable, IEnumerator
JScript unterstützt die Verwendung von Strukturen, aber nicht die Deklaration von neuen Strukturen.
Die foreach-Anweisung in C# (for each in C++, For Each in Visual Basic) verbirgt die Komplexität der Enumeratoren. Daher empfiehlt es sich, foreach zu verwenden und den Enumerator nicht direkt zu bearbeiten.
Mit Enumeratoren können die Daten in der Auflistung zwar gelesen, nicht jedoch zum Ändern der zugrunde liegenden Auflistung verwendet werden.
Der Enumerator wird zunächst vor das erste Element in der Auflistung gesetzt. An dieser Position ist Current nicht definiert. Daher muss der Enumerator durch einen Aufruf von MoveNext auf das erste Element der Auflistung gesetzt werden, bevor der Wert von Current gelesen werden kann.
Current gibt so lange das gleiche Objekt zurück, bis MoveNext aufgerufen wird. MoveNext legt Current auf das nächste Element fest.
Wenn MoveNext das Ende der Auflistung erreicht, wird der Enumerator hinter das letzte Element in der Auflistung gesetzt, und MoveNext gibt false zurück. Wenn sich der Enumerator an dieser Position befindet, geben nachfolgende Aufrufe von MoveNext ebenfalls false zurück. Wenn beim letzten Aufruf von MoveNextfalse zurückgegeben wurde, ist Current 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 so lange gültig, bis die Auflistung geändert wird. Wenn an der Auflistung Änderungen vorgenommen werden, z. B. durch Hinzufügen, Ändern oder Löschen von Elementen, ist der Enumerator unwiderruflich ungültig und das zugehörige Verhalten nicht definiert.
Der Enumerator hat keinen exklusiven Zugriff auf die Auflistung. Daher ist die Enumeration einer Auflistung systemintern keine threadsichere Prozedur. Um Threadsicherheit während der Enumeration zu gewährleisten, 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 in System.Collections.Generic werden nicht synchronisiert.
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC, Xbox 360
.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.