ReadOnlySpan<T>.Enumerator Struct

Definizione

Fornisce un enumeratore per gli elementi di un oggetto ReadOnlySpan<T>.

public: value class ReadOnlySpan<T>::Enumerator : System::Collections::Generic::IEnumerator<T>
public: value class ReadOnlySpan<T>::Enumerator
public ref struct ReadOnlySpan<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
public ref struct ReadOnlySpan<T>.Enumerator
type ReadOnlySpan<'T>.Enumerator = struct
    interface IEnumerator<'T>
    interface IEnumerator
    interface IDisposable
type ReadOnlySpan<'T>.Enumerator = struct
Public Structure ReadOnlySpan(Of T).Enumerator
Implements IEnumerator(Of T)
Public Structure ReadOnlySpan(Of T).Enumerator

Parametri di tipo

T
Ereditarietà
ReadOnlySpan<T>.Enumerator
Implementazioni

Commenti

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

Inizialmente, l'enumeratore viene posizionato prima del primo elemento dell'oggetto ReadOnlySpan<T>. In questa posizione, Current non è definito. È necessario chiamare per far avanzare MoveNext l'enumeratore al primo elemento di ReadOnlySpan<T> prima di leggere il valore di Current.

Current restituisce lo stesso valore fino a quando MoveNext non viene chiamato . MoveNext imposta Current sull'elemento successivo nell'oggetto ReadOnlySpan<T>.

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

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

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

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

  • 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 implementatori genera un'eccezione o non fornisce alcuna implementazione.

Proprietà

Nome Descrizione
Current

Ottiene un riferimento all'elemento nella posizione corrente dell'enumeratore.

Metodi

Nome Descrizione
MoveNext()

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

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IDisposable.Dispose()

Esegue attività definite dall'applicazione associate alla liberazione, al rilascio o alla reimpostazione di risorse non gestite.

IEnumerator.Current

Ottiene l'elemento nella raccolta in corrispondenza della posizione corrente dell'enumeratore.

IEnumerator.Reset()

Imposta l'enumeratore sulla posizione iniziale, ovvero prima del primo elemento della raccolta.

IEnumerator<T>.Current

Ottiene l'elemento nella raccolta in corrispondenza della posizione corrente dell'enumeratore.

Si applica a