LinkedList<T>.Enumerator Struktur
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.
Zählt die Elemente einer LinkedList<T> auf.
public: value class LinkedList<T>::Enumerator : System::Collections::Generic::IEnumerator<T>
public: value class LinkedList<T>::Enumerator : System::Collections::Generic::IEnumerator<T>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public struct LinkedList<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
public struct LinkedList<T>.Enumerator : System.Collections.Generic.IEnumerator<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
public struct LinkedList<T>.Enumerator : System.Collections.Generic.IEnumerator<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type LinkedList<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IEnumerator
interface IDisposable
type LinkedList<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IEnumerator
interface IDisposable
interface IDeserializationCallback
interface ISerializable
[<System.Serializable>]
type LinkedList<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IDisposable
interface IEnumerator
interface ISerializable
interface IDeserializationCallback
Public Structure LinkedList(Of T).Enumerator
Implements IEnumerator(Of T)
Public Structure LinkedList(Of T).Enumerator
Implements IDeserializationCallback, IEnumerator(Of T), ISerializable
Typparameter
- T
- Vererbung
- Attribute
- Implementiert
Hinweise
Die foreach
Anweisung der C#-Sprache (for each
in C++, For Each
in Visual Basic) blendet die Komplexität der Enumeratoren 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.
Zu Beginn wird der Enumerator vor das erste Element in der Auflistung positioniert. 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 solange dasselbe Objekt zurück, bis MoveNext 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. das Hinzufügen, Ändern oder Löschen von Elementen, wird der Enumerator unwiederbringlich ungültig, und der nächste Aufruf MoveNext oder IEnumerator.Reset löst einen aus 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 von Sammlungen in System.Collections.Generic werden nicht synchronisiert.
Eigenschaften
Current |
Ruft das Element an der aktuellen Position des Enumerators ab. |
Methoden
Dispose() |
Gibt alle vom LinkedList<T>.Enumerator verwendeten Ressourcen frei. |
MoveNext() |
Setzt den Enumerator auf das nächste Element der LinkedList<T>. |
Explizite Schnittstellenimplementierungen
IDeserializationCallback.OnDeserialization(Object) |
Implementiert die ISerializable-Schnittstelle und löst das Deserialisierungsereignis aus, sobald die Deserialisierung abgeschlossen ist. |
IEnumerator.Current |
Ruft das Element an der aktuellen Position des Enumerators ab. |
IEnumerator.Reset() |
Setzt den Enumerator auf seine anfängliche Position vor dem ersten Element in der Auflistung. Diese Klasse kann nicht vererbt werden. |
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
Implementiert die ISerializable-Schnittstelle und gibt die zum Serialisieren der LinkedList<T>-Instanz erforderlichen Daten zurück. |