ReadOnlySpan<T>.Enumerator Struct-datatyp

Definition

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

Typparametrar

T
Arv
ReadOnlySpan<T>.Enumerator
Implementeringar

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 MoveNext. false När uppräknaren är i det här tillståndet returneras MoveNext även efterföljande anrop till false 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>.

Explicita gränssnittsimplementeringar

Name Description
IDisposable.Dispose()

Utför programdefinierade uppgifter som är associerade med att frigöra, frigöra eller återställa ohanterade resurser.

IEnumerator.Current

Hämtar elementet i samlingen på den aktuella positionen för uppräknaren.

IEnumerator.Reset()

Anger uppräknaren till sin ursprungliga position, som är före det första elementet i samlingen.

IEnumerator<T>.Current

Hämtar elementet i samlingen på den aktuella positionen för uppräknaren.

Gäller för