ReadOnlySpan<T>.Enumerator Структура

Определение

Предоставляет перечислитель для элементов 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>.Enumerator

Комментарии

C# ForEach C# языка и для каждого... Следующая конструкция в Visual Basic скрывает сложность перечислителей.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. Необходимо вызвать MoveNext, чтобы переместить перечислитель к первому элементу в 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.

Current возвращает то же значение, пока не будет вызвано MoveNext.Current returns the same value until MoveNext is called. MoveNext задает Current следующий элемент в ReadOnlySpan<T>.MoveNext sets Current to the next item in the ReadOnlySpan<T>.

Если MoveNext передает конец ReadOnlySpan<T>, MoveNext возвращает false.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.

В отличие от других структур перечислителя в .NET, ReadOnlySpan<T>.Enumerator: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>.Enumerator является структурой ссылок и не может быть упакована.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

Возвращает ссылку на элемент в текущей позиции перечислителя.Gets a reference to the item at the current position of the enumerator.

Методы

MoveNext()

Перемещает перечислитель к следующему элементу ReadOnlySpan<T>.Advances the enumerator to the next item of the ReadOnlySpan<T>.

Применяется к