ReadOnlySpan<T>.Enumerator Struct

Definizione

Fornisce un enumeratore per gli elementi di un 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

Parametri di tipo

T
Ereditarietà
ReadOnlySpan<T>.Enumerator

Commenti

Foreach C# del linguaggio C# e For Each... Il costrutto successivo in Visual Basic nasconde la complessità degli enumeratori. Anziché modificare direttamente l'enumeratore, usando foreach o For Each...Next è consigliabile.

Inizialmente, l'enumeratore viene posizionato prima del primo elemento in ReadOnlySpan<T>. In questa posizione, la proprietà Current è indefinita. È necessario chiamare MoveNext per avanzare l'enumeratore al primo elemento nell'oggetto ReadOnlySpan<T> prima di leggere il valore di Current.

Current restituisce lo stesso valore finché non MoveNext viene chiamato. MoveNext imposta Current sull'elemento successivo in ReadOnlySpan<T>.

Se MoveNext passa la fine di ReadOnlySpan<T>, MoveNext restituisce false. Quando l'enumeratore si trova in questo stato, le chiamate successive per MoveNext restituire false e Current non sono definito. Non è possibile impostare Current nuovamente il primo elemento. È necessario creare invece una nuova istanza dell'enumeratore ReadOnlySpan<T> .

Anche se l'oggetto ReadOnlySpan<T> viene allocato nello stack, i dati sottostanti a cui puntano ReadOnlySpan<T> potrebbero non essere. Di conseguenza, l'enumerazione tramite un oggetto ReadOnlySpan<T> non è intrinsecamente una procedura thread-safe. Per garantire la sicurezza dei thread durante l'enumerazione, è necessario implementare la sincronizzazione personalizzata.

A differenza di altre strutture dell'enumeratore in .NET, l'oggetto ReadOnlySpan<T>.Enumerator:

  • Non implementa l'interfaccia IEnumerator o IEnumerator<T> . Questo perché ReadOnlySpan<T>.Enumerator è uno struct di riferimento e non può essere boxed.

  • Non include un Reset metodo, che può impostare l'enumeratore sulla posizione iniziale prima del primo elemento nell'intervallo. Il IEnumerator.Reset() metodo deve essere implementato come parte dell'interfaccia, ma la maggior parte degli implementori genera un'eccezione o non fornisce alcuna implementazione.

Proprietà

Current

Restituisce un riferimento all'elemento in corrispondenza della posizione corrente dell'enumeratore.

Metodi

MoveNext()

Sposta l'enumeratore all'elemento successivo dell'oggetto ReadOnlySpan<T>.

Si applica a