List<T>.Enumerator Struktura
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vyčtou se prvky náčtu List<T>.
public: value class List<T>::Enumerator : System::Collections::Generic::IEnumerator<T>
public struct List<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
[System.Serializable]
public struct List<T>.Enumerator : System.Collections.Generic.IEnumerator<T>
type List<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IEnumerator
interface IDisposable
[<System.Serializable>]
type List<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IDisposable
interface IEnumerator
[<System.Serializable>]
type List<'T>.Enumerator = struct
interface IEnumerator<'T>
interface IEnumerator
interface IDisposable
Public Structure List(Of T).Enumerator
Implements IEnumerator(Of T)
Parametry typu
- T
- Dědičnost
- Atributy
- Implementuje
Poznámky
Příkaz foreach
jazyka C# (for each
v jazyce C++, For Each
v Visual Basic) skryje složitost výčtů. Proto se doporučuje použít foreach
místo přímé manipulace s výčtem.
Enumerátory lze používat ke čtení dat v kolekci, nikoli však k úpravě zdrojové kolekce.
Enumerátor je zpočátku umístěn před prvním prvkem v kolekci. V této pozici Current není definován. Proto je nutné předčíst MoveNext výčet na první prvek kolekce před přečtením hodnoty .Current
Current vrátí stejný objekt, dokud MoveNext se nevolá. MoveNext nastaví Current na další prvek.
Pokud MoveNext předá konec kolekce, enumerátor se umístí za poslední prvek v kolekci a MoveNext vrátí false
. Pokud je výčet na této pozici, následné volání, která se MoveNext mají vrátit false
také . Pokud se vrátí poslední volání MoveNext false
, Current není definováno. Znovu nelze nastavit Current na první prvek kolekce. Místo toho musíte vytvořit novou instanci enumerátoru.
Enumerátor zůstane platný, dokud kolekce zůstane beze změny. Pokud jsou v kolekci provedeny změny, například přidávání, úpravy nebo odstraňování prvků, enumerátor je nenákladně neplatný a další volání MoveNext nebo IEnumerator.Reset vyvolá InvalidOperationExceptionchybu .
Enumerátor nemá výhradní přístup k kolekci; výčtem kolekce tedy není vnitřně bezpečný postup pro vlákno. Pokud chcete zajistit bezpečnost vláken během výčtu, můžete kolekci uzamknout během celého výčtu. Chcete-li více vláknům umožnit přístup ke kolekci pro čtení a zápis, musíte implementovat svou vlastní synchronizaci.
Výchozí implementace kolekcí se System.Collections.Generic nesynchronují.
Vlastnosti
Current |
Získá prvek na aktuální pozici výčtu. |
Metody
Dispose() |
Uvolní všechny prostředky používané nástrojem List<T>.Enumerator. |
MoveNext() |
Přejde výčet na další prvek objektu List<T>. |
Explicitní implementace rozhraní
IEnumerator.Current |
Získá prvek na aktuální pozici výčtu. |
IEnumerator.Reset() |
Nastaví enumerátor na počáteční pozici, která je před prvním prvkem v kolekci. |