ArrayList.GetEnumerator Metoda
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í.
Vrátí enumerátor, který iteruje přes ArrayList.
Přetížení
| Name | Description |
|---|---|
| GetEnumerator() |
Vrátí enumerátor pro celý ArrayList. |
| GetEnumerator(Int32, Int32) |
Vrátí enumerátor pro oblast prvků v objektu ArrayList. |
GetEnumerator()
- Zdroj:
- ArrayList.cs
- Zdroj:
- ArrayList.cs
- Zdroj:
- ArrayList.cs
- Zdroj:
- ArrayList.cs
- Zdroj:
- ArrayList.cs
Vrátí enumerátor pro celý ArrayList.
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
IEnumeratorCelé ArrayList .
Implementuje
Příklady
Následující příklad získá enumerátor pro a ArrayListenumerátor pro rozsah prvků v objektu 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 Visual Basic) skryje složitost výčtů. Proto se místo přímé manipulace s enumerátorem doporučuje použití foreach .
Enumerátory lze použít ke čtení dat v kolekci, ale nelze je použít k úpravě podkladové kolekce.
Na začá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. V této pozici Current není definováno. Proto je nutné volat MoveNext , aby se enumerátor před čtením hodnoty Current.
Current vrátí stejný objekt, dokud se nevolá MoveNext nebo Reset nevolá. MoveNext nastaví Current na další prvek.
Pokud MoveNext předá konec kolekce, enumerátor je umístěn za posledním prvkem v kolekci a MoveNext vrátí .false Pokud je enumerátor na této pozici, následná volání vrátit MoveNext také false. Pokud se vrátí poslední volání MoveNextfalse, Current není definováno. Chcete-li nastavit Current na první prvek kolekce znovu, můžete volat Reset následovaný MoveNext.
Enumerátor zůstane platný, dokud kolekce zůstane beze změny. Pokud jsou v kolekci provedeny změny, jako je přidání, úprava nebo odstranění prvků, enumerátor je nevratně neplatný a jeho chování není definováno.
Enumerátor nemá výhradní přístup k kolekci; proto výčet prostřednictvím kolekce není vnitřně bezpečným postupem pro přístup z více vláken. Chcete-li zaručit bezpečnost vláken během výčtu, můžete kolekci uzamknout během celého výčtu. Pokud chcete povolit přístup ke kolekci více vlákny pro čtení a zápis, musíte implementovat vlastní synchronizaci.
Tato metoda je O(1) operace.
Viz také
Platí pro
GetEnumerator(Int32, Int32)
- Zdroj:
- ArrayList.cs
- Zdroj:
- ArrayList.cs
- 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 ArrayList založený na nule, na který by měl enumerátor odkazovat.
Návraty
Pro IEnumerator zadaný rozsah prvků v objektu ArrayList.
Výjimky
index a count nezadávejte platný rozsah v sadě ArrayList.
Příklady
Následující příklad získá enumerátor pro a ArrayListenumerátor pro rozsah prvků v objektu 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# skryje složitost výčtů. Proto se místo přímé manipulace s enumerátorem doporučuje použití foreach .
Enumerátory lze použít ke čtení dat v kolekci, ale nelze je použít k úpravě podkladové kolekce.
Na začá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. V této pozici Current není definováno. Proto je nutné volat MoveNext , aby se enumerátor před čtením hodnoty Current.
Current vrátí stejný objekt, dokud se nevolá MoveNext nebo Reset nevolá. MoveNext nastaví Current na další prvek.
Pokud MoveNext předá konec kolekce, enumerátor je umístěn za posledním prvkem v kolekci a MoveNext vrátí .false Pokud je enumerátor na této pozici, následná volání vrátit MoveNext také false. Pokud se vrátí poslední volání MoveNextfalse, Current není definováno. Chcete-li nastavit Current na první prvek kolekce znovu, můžete volat Reset následovaný MoveNext.
Enumerátor zůstane platný, dokud kolekce zůstane beze změny. Pokud jsou v kolekci provedeny změny, jako je přidání, úprava nebo odstranění prvků, enumerátor je nevratně neplatný a jeho chování není definováno.
Enumerátor nemá výhradní přístup k kolekci; proto výčet prostřednictvím kolekce není vnitřně bezpečným postupem pro přístup z více vláken. Chcete-li zaručit bezpečnost vláken během výčtu, můžete kolekci uzamknout během celého výčtu. Pokud chcete povolit přístup ke kolekci více vlákny pro čtení a zápis, musíte implementovat vlastní synchronizaci.
Tato metoda je O(1) operace.