IEnumerator(T)-Schnittstelle
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern

IEnumerator<T>-Schnittstelle

Aktualisiert: November 2007

Unterstützt eine einfache Iteration durch eine generische Auflistung.

Namespace:  System.Collections.Generic
Assembly:  mscorlib (in mscorlib.dll)

public interface IEnumerator<T> : IDisposable, 
	IEnumerator

J# unterstützt die Verwendung von generischen APIs, aber nicht die Deklaration von neuen generischen APIs.
JScript unterstützt keine generischen Typen oder Methoden.

Typparameter

T

Der Typ der aufzulistenden Objekte.

IEnumerator<T> ist die Basisschnittstelle für alle generischen Enumeratoren.

Die foreach-Anweisung in C# (for each in C++, For Each in Visual Basic) verbirgt die Komplexität der Enumeratoren. Daher wird empfohlen, foreach zu verwenden, anstatt den Enumerator direkt zu bearbeiten.

Mit Enumeratoren können die Daten in der Auflistung zwar gelesen, jedoch nicht zum Ändern der zugrunde liegenden Auflistung verwendet werden.

Anfänglich befindet sich der Enumerator vor dem ersten Element in der Auflistung. An dieser Position ist Current nicht definiert. Daher muss der Enumerator durch das Aufrufen von MoveNext auf das erste Element der Auflistung festgelegt werden, bevor der Wert von Current gelesen werden kann.

Current gibt dasselbe 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 nach dem letzten Element in der Auflistung positioniert, und MoveNext gibt false zurück. Wenn sich der Enumerator an dieser Position befindet, geben nachfolgende Aufrufe von MoveNext ebenfalls false zurück. Wenn der letzte Aufruf von MoveNextfalse zurückgegeben hat, ist Current nicht definiert. Sie können Current nicht erneut auf das erste Element der Auflistung festlegen, sondern müssen eine neue Enumeratorinstanz erstellen.

Die Reset-Methode wird für die COM-Interoperabilität bereitgestellt. Sie muss nicht unbedingt implementiert werden, sondern der Implementierer kann stattdessen einfach eine NotSupportedException auslösen.

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 im System.Collections.Generic-Namespace werden nicht synchronisiert.

Hinweise zur Implementierung:

Zur Implementierung dieser Schnittstelle muss die nicht generische IEnumerator-Schnittstelle implementiert werden. Die MoveNext-Methode und die Reset-Methode hängen nicht von T ab und sind nur in der nicht generischen Schnittstelle enthalten. Die Current-Eigenschaft ist in beiden Schnittstellen enthalten und verfügt über verschiedene Rückgabetypen. Implementieren Sie die nicht generische IEnumerator.Current-Eigenschaft als explizite Schnittstellenimplementierung. Dies ermöglicht es jedem Consumer der nicht generischen Schnittstelle, die generische Schnittstelle zu verwenden.

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.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0

.NET Compact Framework

Unterstützt in: 3.5, 2.0

XNA Framework

Unterstützt in: 2.0, 1.0

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2016 Microsoft