Stack<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.
Listet die Elemente eines .Stack<T>
public: value class Stack<T>::Enumerator : System::Collections::Generic::IEnumerator<T>
public struct Stack<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
[System.Serializable]
public struct Stack<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
type Stack<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IEnumerator
interface IDisposable
[<System.Serializable>]
type Stack<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IDisposable
interface IEnumerator
Public Structure Stack(Of T).Enumerator
Implements IEnumerator(Of T)
Typparameter
- T
- Vererbung
- Attribute
- Implementiert
Hinweise
Die foreach-Anweisung der C#-Sprache (For Each in Visual Basic) blendet die Komplexität der Enumerationen aus. Daher wird die Verwendung foreach empfohlen, anstatt den Enumerator direkt zu bearbeiten.
Enumeratoren können verwendet werden, um die Daten in der Auflistung zu lesen, aber sie können nicht zum Ändern der zugrunde liegenden Auflistung verwendet werden.
Zunächst wird der Enumerator vor dem ersten Element in der Auflistung positioniert. An dieser Position Current ist nicht definiert. Daher müssen Sie aufrufen MoveNext , um den Enumerator zum ersten Element der Auflistung vor dem Lesen des Werts Currentvon .
Current gibt dasselbe Objekt zurück, bis MoveNext es aufgerufen wird. MoveNext wird auf das nächste Element festgelegt Current .
Wenn MoveNext das Ende der Auflistung übergeben wird, wird der Enumerator nach dem letzten Element in der Auflistung positioniert und MoveNext zurückgegeben false. Wenn sich der Enumerator an dieser Position befindet, werden nachfolgende Aufrufe MoveNext zurückgegeben false. Wenn der letzte zurückgegebene MoveNextfalse Aufruf Current nicht definiert ist. Sie können nicht erneut auf das erste Element der Auflistung festlegen Current . Stattdessen müssen Sie eine neue Enumerationsinstanz 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 Enumerator unwiderruflich ungültig und der nächste Aufruf an MoveNext oder IEnumerator.Reset löst einen InvalidOperationException.
Der Enumerator hat keinen exklusiven Zugriff auf die Sammlung; Daher ist das Aufzählen durch eine Sammlung intrinsisch keine threadsichere Prozedur. Um die Threadsicherheit während der Enumeration zu gewährleisten, können Sie die Sammlung während der gesamten Enumeration sperren. Damit auf die Sammlung über mehrere Threads zum Lesen und Schreiben zugegriffen werden kann, müssen Sie eine eigene Synchronisierung implementieren.
Standardimplementierungen von Auflistungen werden System.Collections.Generic nicht synchronisiert.
Eigenschaften
| Name | Beschreibung |
|---|---|
| Current |
Ruft das Element an der aktuellen Position des Enumerators ab. |
Methoden
| Name | Beschreibung |
|---|---|
| Dispose() |
Veröffentlicht alle ressourcen, die von der Stack<T>.Enumerator. |
| MoveNext() |
Wechselt den Enumerator zum nächsten Element der Stack<T>. |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IEnumerator.Current |
Ruft das Element an der aktuellen Position des Enumerators ab. |
| IEnumerator.Reset() |
Legt den Enumerator auf seine Anfangsposition fest, die sich vor dem ersten Element in der Auflistung befindet. Diese Klasse kann nicht vererbt werden. |