ReadOnlySpan<T>.Enumerator ReadOnlySpan<T>.Enumerator ReadOnlySpan<T>.Enumerator ReadOnlySpan<T>.Enumerator Struct

Definice

Poskytuje enumerátor pro prvky 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
Dědičnost
ReadOnlySpan<T>.EnumeratorReadOnlySpan<T>.EnumeratorReadOnlySpan<T>.EnumeratorReadOnlySpan<T>.Enumerator

Poznámky

C# ForEach C# jazyka a pro každý... Další konstrukce v Visual Basic skrývá složitost čítačů.The C# foreach of the C# language and the For Each...Next construct in Visual Basic hides the complexity of enumerators. Místo toho, aby se mohl použít foreach nebo For Each...Next , se doporučuje přímo manipulovat s enumerátorem.Instead of directly manipulating the enumerator, using foreach or For Each...Next is recommended.

Zpočátku je enumerátor umístěn před první prvek v ReadOnlySpan<T>.Initially, the enumerator is positioned before the first element in the ReadOnlySpan<T>. Na této pozici Current není definován.At this position, Current is undefined. Je nutné zavolat MoveNext pro pokračovánívýčtuReadOnlySpan<T> na první položku v rozhraní před čtením hodnoty Current.You must call MoveNext to advance the enumerator to the first item in the ReadOnlySpan<T> before reading the value of Current.

Currentvrací stejnou hodnotu, dokud MoveNext není volána.Current returns the same value until MoveNext is called. MoveNextnastaví Current na další položku ReadOnlySpan<T>v.MoveNext sets Current to the next item in the ReadOnlySpan<T>.

Pokud MoveNext předá konec ReadOnlySpan<T>, MoveNext vrátí. falseIf MoveNext passes the end of the ReadOnlySpan<T>, MoveNext returns false. Když je enumerátor v tomto stavu, následné volání MoveNext vrátí false také a Current není definováno.When the enumerator is at this state, subsequent calls to MoveNext also return false and Current is undefined. Na první položku Current ReadOnlySpan<T> se znovu nedá nastavit. musíte místo toho vytvořit novou instanci enumerátoru.You cannot set Current to the first item in the ReadOnlySpan<T> again; you must create a new enumerator instance instead.

I když ReadOnlySpan<T> je přiděleno v zásobníku, podkladová data, na která odkazují, nemusí být. ReadOnlySpan<T>Though the ReadOnlySpan<T> is allocated on the stack, the underlying data on which the ReadOnlySpan<T> points to, may not be. Proto vytváření výčtu přes ReadOnlySpan<T> je nebezpečná procedura pro přístup z více vláken.Therefore, enumerating through a ReadOnlySpan<T> is intrinsically not a thread-safe procedure. Chcete-li zaručit bezpečnost vlákna během výčtu, je nutné implementovat vlastní synchronizaci.To guarantee thread safety during enumeration, you must implement your own synchronization.

Na ReadOnlySpan<T>.Enumeratorrozdíl od některých dalších struktur enumerátorů v rozhraní .NET:Unlike some other enumerator structures in .NET, the ReadOnlySpan<T>.Enumerator:

  • Neimplementuje IEnumerator rozhraní nebo IEnumerator<T> .Does not implement the IEnumerator or IEnumerator<T> interface. Důvodem je, ReadOnlySpan<T>.Enumerator že je Struktura ref a nemůže být zabalena.This is because ReadOnlySpan<T>.Enumerator is a ref struct and cannot be boxed.

  • Reset Neobsahuje metodu, která může nastavit enumerátor na počáteční pozici před prvním prvkem v rozsahu.Does not include a Reset method, which can set the enumerator to its initial position before the first element in the span. IEnumerator.Reset() (Metoda musí být implementována jako součást rozhraní, ale většina implementací buď vyvolala výjimku, nebo neposkytuje žádnou implementaci.)(The IEnumerator.Reset() method must be implemented as part of the interface, but most implementors either throw an exception or provide no implementation.)

Vlastnosti

Current Current Current Current

Získá odkaz na položku na aktuální pozici čítače výčtu.Gets a reference to the item at the current position of the enumerator.

Metody

MoveNext() MoveNext() MoveNext() MoveNext()

Posune enumerátor na další položku ReadOnlySpan<T>.Advances the enumerator to the next item of the ReadOnlySpan<T>.

Platí pro