ReadOnlySpan<T>.Enumerator ReadOnlySpan<T>.Enumerator ReadOnlySpan<T>.Enumerator ReadOnlySpan<T>.Enumerator Struct

定義

ReadOnlySpan<T> の要素の列挙子を提供します。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

型パラメーター

T
継承
ReadOnlySpan<T>.EnumeratorReadOnlySpan<T>.EnumeratorReadOnlySpan<T>.EnumeratorReadOnlySpan<T>.Enumerator

注釈

C# のforeachとVisual BasicのFor Each...Next構造は、列挙子の複雑さを隠します。The C# foreach of the C# language and the For Each...Next construct in Visual Basic hides the complexity of enumerators. 列挙子を直接操作するのではなく、foreachまたはFor Each...Nextを使用することをお勧めします。Instead of directly manipulating the enumerator, using foreach or For Each...Next is recommended.

初期状態で、列挙子はReadOnlySpan<T>内の最初の要素の前に配置されます。Initially, the enumerator is positioned before the first element in the ReadOnlySpan<T>. この位置では、Current は未定義です。At this position, Current is undefined. Currentの値を読み取る前に、MoveNextを呼び出し、列挙子をReadOnlySpan<T>の最初の項目に進める必要があります。You must call MoveNext to advance the enumerator to the first item in the ReadOnlySpan<T> before reading the value of Current.

MoveNextが呼び出されるまで、Current は同じ値を返します。Current returns the same value until MoveNext is called. MoveNextは、CurrentReadOnlySpan<T>の次の項目に設定します。MoveNext sets Current to the next item in the ReadOnlySpan<T>.

MoveNextReadOnlySpan<T>の末尾を超えた場合、MoveNextfalseを返します。If MoveNext passes the end of the ReadOnlySpan<T>, MoveNext returns false. 列挙子がこの状態にある場合、MoveNextの後続の呼び出しもfalseを返し、Currentは未定義になります。When the enumerator is at this state, subsequent calls to MoveNext also return false and Current is undefined. Currentに再度ReadOnlySpan<T>の最初の項目を設定することはできません。列挙子の新しいインスタンスを代わりに作成する必要があります。You cannot set Current to the first item in the ReadOnlySpan<T> again; you must create a new enumerator instance instead.

ReadOnlySpan<T>はスタックに割り当てられますが、ReadOnlySpan<T>の指す基底データはそうでない可能性があります。Though the ReadOnlySpan<T> is allocated on the stack, the underlying data on which the ReadOnlySpan<T> points to, may not be. そのため、ReadOnlySpan<T>の列挙処理は、本質的にはスレッド セーフな手順ではありません。Therefore, enumerating through a ReadOnlySpan<T> is intrinsically not a thread-safe procedure. 列挙中にスレッド セーフを保証するために、独自の同期を実装する必要があります。To guarantee thread safety during enumeration, you must implement your own synchronization.

ReadOnlySpan<T>.Enumeratorは、.NETの他の列挙子構造体とは異なります。Unlike some other enumerator structures in .NET, the ReadOnlySpan<T>.Enumerator:

  • IEnumeratorまたはIEnumerator<T>インターフェイスを実装しません。Does not implement the IEnumerator or IEnumerator<T> interface. これは、ReadOnlySpan<T>.Enumeratorref 構造体であり、ボックス化できないためです。This is because ReadOnlySpan<T>.Enumerator is a ref struct and cannot be boxed.

  • 列挙子をスパン内の最初の要素より前の初期位置に設定する、Resetメソッドは含まれません。Does not include a Reset method, which can set the enumerator to its initial position before the first element in the span. (IEnumerator.Reset()メソッドは、インターフェイスの一部として実装する必要がありますが、ほとんどの実装が例外をスローするか、実装されていません。)(The IEnumerator.Reset() method must be implemented as part of the interface, but most implementors either throw an exception or provide no implementation.)

プロパティ

Current Current Current Current

列挙子の現在位置にある項目への参照を取得します。Gets a reference to the item at the current position of the enumerator.

メソッド

MoveNext() MoveNext() MoveNext() MoveNext()

列挙子を ReadOnlySpan<T> の次の項目に進めます。Advances the enumerator to the next item of the ReadOnlySpan<T>.

適用対象