ReadOnlySpan<T>.Enumerator 構造体

定義

ReadOnlySpan<T> の要素の列挙子を提供します。

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

型パラメーター

T
継承
ReadOnlySpan<T>.Enumerator

注釈

C# のforeachとVisual BasicのFor Each...Next構造は、列挙子の複雑さを隠します。 列挙子を直接操作するのではなく、foreachまたはFor Each...Nextを使用することをお勧めします。

初期状態で、列挙子はReadOnlySpan<T>内の最初の要素の前に配置されます。 この位置では、Current が未定義です。 Currentの値を読み取る前に、MoveNextを呼び出し、列挙子をReadOnlySpan<T>の最初の項目に進める必要があります。

MoveNextが呼び出されるまで、Current は同じ値を返します。 MoveNextは、CurrentReadOnlySpan<T>の次の項目に設定します。

MoveNextReadOnlySpan<T>の末尾を超えた場合、MoveNextfalseを返します。 列挙子がこの状態にある場合、MoveNextの後続の呼び出しもfalseを返し、Currentは未定義になります。 Currentに再度ReadOnlySpan<T>の最初の項目を設定することはできません。列挙子の新しいインスタンスを代わりに作成する必要があります。

ReadOnlySpan<T>はスタックに割り当てられますが、ReadOnlySpan<T>の指す基底データはそうでない可能性があります。 そのため、ReadOnlySpan<T>の列挙処理は、本質的にはスレッド セーフな手順ではありません。 列挙中にスレッド セーフを保証するには、独自の同期を実装する必要があります。

ReadOnlySpan<T>.Enumeratorは、.NETの他の列挙子構造体とは異なります。

  • IEnumeratorまたはIEnumerator<T>インターフェイスを実装しません。 これは、ReadOnlySpan<T>.Enumeratorref 構造体であり、ボックス化できないためです。

  • 列挙子をスパン内の最初の要素より前の初期位置に設定する、Resetメソッドは含まれません。 (IEnumerator.Reset()メソッドは、インターフェイスの一部として実装する必要がありますが、ほとんどの実装が例外をスローするか、実装されていません。)

プロパティ

Current

列挙子の現在位置にある項目への参照を取得します。

メソッド

MoveNext()

列挙子を ReadOnlySpan<T> の次の項目に進めます。

適用対象