Sdílet prostřednictvím


ArrayList.GetEnumerator Metoda

Definice

Vrátí enumerátor, který iteruje přes ArrayList.

Přetížení

GetEnumerator()

Vrátí enumerátor pro celý ArrayListobjekt .

GetEnumerator(Int32, Int32)

Vrátí enumerátor pro oblast prvků v objektu ArrayList.

GetEnumerator()

Zdroj:
ArrayList.cs
Zdroj:
ArrayList.cs
Zdroj:
ArrayList.cs

Vrátí enumerátor pro celý ArrayListobjekt .

public:
 virtual System::Collections::IEnumerator ^ GetEnumerator();
public virtual System.Collections.IEnumerator GetEnumerator ();
abstract member GetEnumerator : unit -> System.Collections.IEnumerator
override this.GetEnumerator : unit -> System.Collections.IEnumerator
Public Overridable Function GetEnumerator () As IEnumerator

Návraty

An IEnumerator pro celý ArrayListobjekt .

Implementuje

Příklady

Následující příklad získá enumerátor pro ArrayList, a enumerátor pro oblast prvků v ArrayList.

using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {
        ArrayList colors = new ArrayList();
        colors.Add("red");
        colors.Add("blue");
        colors.Add("green");
        colors.Add("yellow");
        colors.Add("beige");
        colors.Add("brown");
        colors.Add("magenta");
        colors.Add("purple");

        IEnumerator e = colors.GetEnumerator();
        while (e.MoveNext())
        {
            Object obj = e.Current;
            Console.WriteLine(obj);
        }

        Console.WriteLine();

        IEnumerator e2 = colors.GetEnumerator(2, 4);
        while (e2.MoveNext())
        {
            Object obj = e2.Current;
            Console.WriteLine(obj);
        }
    }
}

/* This code example produces
   the following ouput:
    red
    blue
    green
    yellow
    beige
    brown
    magenta
    purple

    green
    yellow
    beige
    brown
 */
Imports System.Collections

Class Program
    Private Shared Sub Main(ByVal args As String())
        Dim colors As New ArrayList()
        colors.Add("red")
        colors.Add("blue")
        colors.Add("green")
        colors.Add("yellow")
        colors.Add("beige")
        colors.Add("brown")
        colors.Add("magenta")
        colors.Add("purple")
        
        Dim e As IEnumerator = colors.GetEnumerator()
        While e.MoveNext()
            Dim obj As [Object] = e.Current
            Console.WriteLine(obj)
        End While
        
        Console.WriteLine()
        
        Dim e2 As IEnumerator = colors.GetEnumerator(2, 4)
        While e2.MoveNext()
            Dim obj As [Object] = e2.Current
            Console.WriteLine(obj)
        End While
    End Sub
End Class

' This code example produces
' the following ouput:
' red
' blue
' green
' yellow
' beige
' brown
' magenta
' purple
'
' green
' yellow
' beige
' brown
'

Poznámky

Příkaz foreach jazyka C# (for each v jazyce Visual Basic) skrývá složitost enumerátorů. Proto se doporučuje používat foreach místo přímé manipulace s enumerátorem.

Enumerátory lze používat ke čtení dat v kolekci, nikoli však k úpravě zdrojové kolekce.

Zpočátku je enumerátor umístěn před prvním prvkem v kolekci. Reset také vrátí enumerátor zpět do této pozice. Na této pozici Current není definován. Proto je nutné před čtením hodnoty CurrentvolatMoveNext, aby se enumerátor přepojí na první prvek kolekce.

Current vrátí stejný objekt, dokud není volána nebo MoveNextReset . MoveNext nastaví Current na další prvek.

Pokud MoveNext přejde na konec kolekce, enumerátor se umístí za poslední prvek v kolekci a MoveNext vrátí false. Pokud je enumerátor na této pozici, další volání MoveNext vrátí falsetaké . Pokud je poslední volání MoveNext vráceno false, Current není definováno. Pokud chcete znovu nastavit Current první prvek kolekce, můžete zavolat Reset a pak MoveNext.

Enumerátor zůstane platný, dokud kolekce zůstane beze změny. Pokud jsou v kolekci provedeny změny, například přidání, úprava nebo odstranění prvků, je výčet nenávratně neplatný a jeho chování není definováno.

Enumerátor nemá výhradní přístup ke kolekci. proto výčet prostřednictvím kolekce není vnitřně procedurou bezpečnou pro přístup z více vláken. Abyste zajistili 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.

Tato metoda je O(1) operace.

Viz také

Platí pro

GetEnumerator(Int32, Int32)

Zdroj:
ArrayList.cs
Zdroj:
ArrayList.cs
Zdroj:
ArrayList.cs

Vrátí enumerátor pro oblast prvků v objektu ArrayList.

public:
 virtual System::Collections::IEnumerator ^ GetEnumerator(int index, int count);
public virtual System.Collections.IEnumerator GetEnumerator (int index, int count);
abstract member GetEnumerator : int * int -> System.Collections.IEnumerator
override this.GetEnumerator : int * int -> System.Collections.IEnumerator
Public Overridable Function GetEnumerator (index As Integer, count As Integer) As IEnumerator

Parametry

index
Int32

Počáteční index oddílu založeného ArrayList na nule, na který by měl enumerátor odkazovat.

count
Int32

Počet prvků v oddílu ArrayList , na který by měl enumerátor odkazovat.

Návraty

An IEnumerator pro zadaný rozsah prvků v objektu ArrayList.

Výjimky

Hodnota index je menší než nula.

-nebo-

Hodnota count je menší než nula.

index a count nezadávejte platný rozsah v ArrayListsouboru .

Příklady

Následující příklad získá enumerátor pro ArrayList, a enumerátor pro oblast prvků v ArrayList.

using System;
using System.Collections;

class Program
{
    static void Main(string[] args)
    {
        ArrayList colors = new ArrayList();
        colors.Add("red");
        colors.Add("blue");
        colors.Add("green");
        colors.Add("yellow");
        colors.Add("beige");
        colors.Add("brown");
        colors.Add("magenta");
        colors.Add("purple");

        IEnumerator e = colors.GetEnumerator();
        while (e.MoveNext())
        {
            Object obj = e.Current;
            Console.WriteLine(obj);
        }

        Console.WriteLine();

        IEnumerator e2 = colors.GetEnumerator(2, 4);
        while (e2.MoveNext())
        {
            Object obj = e2.Current;
            Console.WriteLine(obj);
        }
    }
}

/* This code example produces
   the following ouput:
    red
    blue
    green
    yellow
    beige
    brown
    magenta
    purple

    green
    yellow
    beige
    brown
 */
Imports System.Collections

Class Program
    Private Shared Sub Main(ByVal args As String())
        Dim colors As New ArrayList()
        colors.Add("red")
        colors.Add("blue")
        colors.Add("green")
        colors.Add("yellow")
        colors.Add("beige")
        colors.Add("brown")
        colors.Add("magenta")
        colors.Add("purple")
        
        Dim e As IEnumerator = colors.GetEnumerator()
        While e.MoveNext()
            Dim obj As [Object] = e.Current
            Console.WriteLine(obj)
        End While
        
        Console.WriteLine()
        
        Dim e2 As IEnumerator = colors.GetEnumerator(2, 4)
        While e2.MoveNext()
            Dim obj As [Object] = e2.Current
            Console.WriteLine(obj)
        End While
    End Sub
End Class

' This code example produces
' the following ouput:
' red
' blue
' green
' yellow
' beige
' brown
' magenta
' purple
'
' green
' yellow
' beige
' brown
'

Poznámky

Příkaz foreach jazyka C# (for each v jazyce Visual C++, For Each Visual Basic) skrývá složitost enumerátorů. Proto se doporučuje používat foreach místo přímé manipulace s enumerátorem.

Enumerátory lze používat ke čtení dat v kolekci, nikoli však k úpravě zdrojové kolekce.

Zpočátku je enumerátor umístěn před prvním prvkem v kolekci. Reset také vrátí enumerátor zpět do této pozice. Na této pozici Current není definován. Proto je nutné před čtením hodnoty CurrentvolatMoveNext, aby se enumerátor přepojí na první prvek kolekce.

Current vrátí stejný objekt, dokud není volána nebo MoveNextReset . MoveNext nastaví Current na další prvek.

Pokud MoveNext přejde na konec kolekce, enumerátor se umístí za poslední prvek v kolekci a MoveNext vrátí false. Pokud je enumerátor na této pozici, další volání MoveNext vrátí falsetaké . Pokud je poslední volání MoveNext vráceno false, Current není definováno. Pokud chcete znovu nastavit Current první prvek kolekce, můžete zavolat Reset a pak MoveNext.

Enumerátor zůstane platný, dokud kolekce zůstane beze změny. Pokud jsou v kolekci provedeny změny, například přidání, úprava nebo odstranění prvků, je výčet nenávratně neplatný a jeho chování není definováno.

Enumerátor nemá výhradní přístup ke kolekci. proto výčet prostřednictvím kolekce není vnitřně procedurou bezpečnou pro přístup z více vláken. Abyste zajistili 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.

Tato metoda je O(1) operace.

Viz také

Platí pro