ReadOnlySpan<T>.Enumerator Struct-datatyp

Definition

Tillhandahåller en uppräkning för elementen i en 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

Typparametrar

T
Arv
ReadOnlySpan<T>.Enumerator

Kommentarer

C# foreach för C#-språket och För varje... Nästa konstruktion i Visual Basic döljer komplexiteten hos uppräknare. I stället för att direkt manipulera uppräknaren rekommenderar vi att du använder foreach eller For Each...Next .

Inledningsvis placeras uppräknaren före det första elementet i ReadOnlySpan<T>. I det här läget Current är det odefinierat. Du måste anropa MoveNext för att flytta uppräknaren till det första objektet i ReadOnlySpan<T> innan du läser värdet Currentför .

Current returnerar samma värde tills det anropas MoveNext . MoveNext anger Current till nästa objekt i ReadOnlySpan<T>.

Om MoveNext passerar slutet av ReadOnlySpan<T>returnerar false. MoveNext När uppräknaren är i det här tillståndet returneras false även efterföljande anrop till MoveNext och Current är odefinierat. Du kan inte ange Current det första objektet i igen. Du måste skapa en ny uppräkningsinstans i ReadOnlySpan<T> stället.

ReadOnlySpan<T> Även om allokeras på stacken kanske inte de underliggande data som ReadOnlySpan<T> pekar på är. Därför är uppräkning genom en ReadOnlySpan<T> i sig inte en trådsäker procedur. För att garantera trådsäkerheten under uppräkningen måste du implementera din egen synkronisering.

Till skillnad från andra uppräkningsstrukturer i .NET ReadOnlySpan<T>.Enumerator:

  • Implementerar IEnumerator inte gränssnittet eller IEnumerator<T> . Detta beror på att ReadOnlySpan<T>.Enumerator är en referens struct och kan inte boxas.

  • Inkluderar inte en Reset metod som kan ange uppräknaren till sin ursprungliga position före det första elementet i intervallet. (Metoden IEnumerator.Reset() måste implementeras som en del av gränssnittet, men de flesta implementorer utlöser antingen ett undantag eller tillhandahåller ingen implementering.)

Egenskaper

Name Description
Current

Hämtar en referens till objektet vid den aktuella positionen för uppräknaren.

Metoder

Name Description
MoveNext()

Avancerar uppräknaren till nästa objekt i ReadOnlySpan<T>.

Gäller för