ReadOnlySpan<T>.Enumerator Struktur

Definition

Stellt einen Enumerator für diese Elemente eines ReadOnlySpan<T>-Elements bereit.Provides an enumerator for the elements of a ReadOnlySpan<T>.

public: value class ReadOnlySpan<T>::Enumerator
public struct ReadOnlySpan<T>.Enumerator
type ReadOnlySpan<'T>.Enumerator = struct
Public Structure ReadOnlySpan(Of T).Enumerator

Typparameter

T
Vererbung
ReadOnlySpan<T>.Enumerator

Hinweise

Die c#- foreach -Sprache der c#-Sprache und die for each-... Das nächste Konstrukt in Visual Basic verbirgt die Komplexität von Enumeratoren.The C# foreach of the C# language and the For Each...Next construct in Visual Basic hides the complexity of enumerators. Anstatt den Enumerator direkt zu manipulieren, wird die Verwendung von foreach oder For Each...Next empfohlen.Instead of directly manipulating the enumerator, using foreach or For Each...Next is recommended.

Anfänglich wird der Enumerator vor dem ersten Element in der positioniert ReadOnlySpan<T> .Initially, the enumerator is positioned before the first element in the ReadOnlySpan<T>. An dieser Position ist Current nicht definiert.At this position, Current is undefined. Sie müssen aufzurufen MoveNext , um den Enumerator vor dem Lesen des Werts von auf das erste Element in der zu setzen ReadOnlySpan<T> Current .You must call MoveNext to advance the enumerator to the first item in the ReadOnlySpan<T> before reading the value of Current.

CurrentGibt den gleichen Wert zurück, bis MoveNext aufgerufen wird.Current returns the same value until MoveNext is called. MoveNextlegt Current auf das nächste Element in der fest ReadOnlySpan<T> .MoveNext sets Current to the next item in the ReadOnlySpan<T>.

Wenn MoveNext das Ende von übergibt ReadOnlySpan<T> , wird MoveNext zurückgegeben false .If MoveNext passes the end of the ReadOnlySpan<T>, MoveNext returns false. Wenn sich der Enumerator in diesem Zustand befindet, geben nachfolgende Aufrufe von MoveNext ebenfalls zurück false und Current sind nicht definiert.When the enumerator is at this state, subsequent calls to MoveNext also return false and Current is undefined. Sie können nicht Current erneut auf das erste Element im festlegen ReadOnlySpan<T> . stattdessen müssen Sie eine neue Enumeratorinstanz erstellen.You cannot set Current to the first item in the ReadOnlySpan<T> again; you must create a new enumerator instance instead.

Obwohl der ReadOnlySpan<T> auf dem Stapel zugeordnet ist, sind die zugrunde liegenden Daten, auf die ReadOnlySpan<T> verweist, möglicherweise nicht.Though the ReadOnlySpan<T> is allocated on the stack, the underlying data on which the ReadOnlySpan<T> points to, may not be. Daher ist die Enumeration durch eine ReadOnlySpan<T> intrinsisch keine Thread sichere Prozedur.Therefore, enumerating through a ReadOnlySpan<T> is intrinsically not a thread-safe procedure. Um die Thread Sicherheit während der Enumeration zu gewährleisten, müssen Sie eine eigene Synchronisierung implementieren.To guarantee thread safety during enumeration, you must implement your own synchronization.

Anders als bei einigen anderen enumeratorstrukturen in .net ReadOnlySpan<T>.Enumerator :Unlike some other enumerator structures in .NET, the ReadOnlySpan<T>.Enumerator:

  • Implementiert nicht die- IEnumerator Schnittstelle oder die- IEnumerator<T> Schnittstelle.Does not implement the IEnumerator or IEnumerator<T> interface. Der Grund hierfür ReadOnlySpan<T>.Enumerator ist, dass eine ref-Struktur ist und nicht gekapselt werden kann.This is because ReadOnlySpan<T>.Enumerator is a ref struct and cannot be boxed.

  • Enthält keine- Reset Methode, die den Enumerator auf seine anfängliche Position vor dem ersten Element in der Spanne festlegen kann.Does not include a Reset method, which can set the enumerator to its initial position before the first element in the span. (Die- IEnumerator.Reset() Methode muss als Teil der-Schnittstelle implementiert werden, aber die meisten Implementierungen lösen entweder eine Ausnahme aus oder stellen keine Implementierung bereit.)(The IEnumerator.Reset() method must be implemented as part of the interface, but most implementors either throw an exception or provide no implementation.)

Eigenschaften

Current

Ruft einen Verweis auf das Element an der aktuellen Position des Enumerators ab.Gets a reference to the item at the current position of the enumerator.

Methoden

MoveNext()

Legt den Enumerator auf das nächste Element von ReadOnlySpan<T> fest.Advances the enumerator to the next item of the ReadOnlySpan<T>.

Gilt für: