ReadOnlySpan<T>.Enumerator Struktura

Definicja

Dostarcza moduł wyliczający dla elementów 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

Parametry typu

T
Dziedziczenie
ReadOnlySpan<T>.Enumerator

Uwagi

C# Instrukcja foreach C# języka i dla każdego... Następna konstrukcja w Visual Basic ukrywa złożoność modułów wyliczających.The C# foreach of the C# language and the For Each...Next construct in Visual Basic hides the complexity of enumerators. Zamiast bezpośredniego manipulowania modułem wyliczającym zaleca się użycie foreach lub For Each...Next.Instead of directly manipulating the enumerator, using foreach or For Each...Next is recommended.

Początkowo moduł wyliczający jest umieszczony przed pierwszym elementem w ReadOnlySpan<T>.Initially, the enumerator is positioned before the first element in the ReadOnlySpan<T>. W tym miejscu Current nie jest zdefiniowana.At this position, Current is undefined. Przed rozpoczęciem odczytywania wartości Currentnależy wywołać MoveNext, aby przepełnić moduł wyliczający do pierwszego elementu w ReadOnlySpan<T>.You must call MoveNext to advance the enumerator to the first item in the ReadOnlySpan<T> before reading the value of Current.

Current zwraca tę samą wartość do momentu wywołania metody MoveNext.Current returns the same value until MoveNext is called. MoveNext ustawia Current do następnego elementu w ReadOnlySpan<T>.MoveNext sets Current to the next item in the ReadOnlySpan<T>.

Jeśli MoveNext przekazuje koniec ReadOnlySpan<T>, MoveNext zwraca false.If MoveNext passes the end of the ReadOnlySpan<T>, MoveNext returns false. Gdy moduł wyliczający jest w tym stanie, kolejne wywołania MoveNext również zwracają false i Current nie są zdefiniowane.When the enumerator is at this state, subsequent calls to MoveNext also return false and Current is undefined. Nie można ustawić Current do pierwszego elementu w ReadOnlySpan<T> ponownie; Zamiast tego należy utworzyć nowe wystąpienie modułu wyliczającego.You cannot set Current to the first item in the ReadOnlySpan<T> again; you must create a new enumerator instance instead.

Mimo że ReadOnlySpan<T> jest przypisywany na stosie, dane bazowe, do których ReadOnlySpan<T> wskazują, mogą nie być.Though the ReadOnlySpan<T> is allocated on the stack, the underlying data on which the ReadOnlySpan<T> points to, may not be. W związku z tym Wyliczanie za pomocą ReadOnlySpan<T> nie jest w sposób bezpieczny dla wątków.Therefore, enumerating through a ReadOnlySpan<T> is intrinsically not a thread-safe procedure. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, należy zaimplementować własną synchronizację.To guarantee thread safety during enumeration, you must implement your own synchronization.

W przeciwieństwie do innych struktur modułu wyliczającego w programie .NET, ReadOnlySpan<T>.Enumerator:Unlike some other enumerator structures in .NET, the ReadOnlySpan<T>.Enumerator:

  • Nie implementuje interfejsu IEnumerator ani IEnumerator<T>.Does not implement the IEnumerator or IEnumerator<T> interface. Dzieje się tak, ponieważ ReadOnlySpan<T>.Enumerator jest strukturą ref i nie może być opakowany.This is because ReadOnlySpan<T>.Enumerator is a ref struct and cannot be boxed.

  • Nie zawiera metody Reset, która może ustawić moduł wyliczający na jego początkową pozycję przed pierwszym elementem w zakresie.Does not include a Reset method, which can set the enumerator to its initial position before the first element in the span. (Metoda IEnumerator.Reset() musi być zaimplementowana jako część interfejsu, ale większość realizatorów zgłasza wyjątek lub nie zapewnia implementacji).(The IEnumerator.Reset() method must be implemented as part of the interface, but most implementors either throw an exception or provide no implementation.)

Właściwości

Current

Pobiera odwołanie do elementu w bieżącej pozycji modułu wyliczającego.Gets a reference to the item at the current position of the enumerator.

Metody

MoveNext()

Przesuwa moduł wyliczający do następnego elementu ReadOnlySpan<T>.Advances the enumerator to the next item of the ReadOnlySpan<T>.

Dotyczy