ArrayList.GetEnumerator Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce un enumeratore che scorre l'oggetto ArrayList.
Overload
| Nome | Descrizione |
|---|---|
| GetEnumerator() |
Restituisce un enumeratore per l'intero ArrayList. |
| GetEnumerator(Int32, Int32) |
Restituisce un enumeratore per un intervallo di elementi nel ArrayList. |
GetEnumerator()
Restituisce un enumeratore per l'intero 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
Valori restituiti
Oggetto IEnumerator per l'intero ArrayListoggetto .
Implementazioni
Esempio
L'esempio seguente ottiene l'enumeratore per un ArrayListoggetto e l'enumeratore per un intervallo di elementi in 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
'
Commenti
L'istruzione foreach del linguaggio C# (for each in Visual Basic) nasconde la complessità degli enumeratori. Pertanto, è consigliabile usare foreach anziché modificare direttamente l'enumeratore.
Gli enumeratori possono essere usati per leggere i dati nella raccolta, ma non possono essere usati per modificare la raccolta sottostante.
Inizialmente, l'enumeratore viene posizionato prima del primo elemento della raccolta. Reset riporta anche l'enumeratore in questa posizione. In questa posizione, Current non è definito. Pertanto, è necessario chiamare per far avanzare MoveNext l'enumeratore al primo elemento della raccolta prima di leggere il valore di Current.
Current restituisce lo stesso oggetto finché non MoveNext viene chiamato o Reset . MoveNext imposta Current sull'elemento successivo.
Se MoveNext passa la fine della raccolta, l'enumeratore viene posizionato dopo l'ultimo elemento della raccolta e MoveNext restituisce false. Quando l'enumeratore si trova in questa posizione, le chiamate successive per MoveNext restituire falseanche . Se l'ultima chiamata a MoveNext restituisce false, Current non è definita. Per impostare Current di nuovo sul primo elemento della raccolta, è possibile chiamare Reset seguito da MoveNext.
Un enumeratore rimane valido finché la raccolta rimane invariata. Se vengono apportate modifiche alla raccolta, ad esempio l'aggiunta, la modifica o l'eliminazione di elementi, l'enumeratore viene invalidato in modo irreversibile e il relativo comportamento non è definito.
L'enumeratore non ha accesso esclusivo alla raccolta; pertanto, l'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Per garantire la thread safety durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione. Per consentire l'accesso alla raccolta da parte di più thread per la lettura e la scrittura, è necessario implementare la propria sincronizzazione.
Questo metodo è un'operazione O(1) .
Vedi anche
Si applica a
GetEnumerator(Int32, Int32)
Restituisce un enumeratore per un intervallo di elementi nel 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
Parametri
- index
- Int32
Indice iniziale in base zero della ArrayList sezione a cui deve fare riferimento l'enumeratore.
Valori restituiti
Oggetto IEnumerator per l'intervallo specificato di elementi nell'oggetto ArrayList.
Eccezioni
index e count non specificano un intervallo valido in ArrayList.
Esempio
L'esempio seguente ottiene l'enumeratore per un ArrayListoggetto e l'enumeratore per un intervallo di elementi in 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
'
Commenti
L'istruzione foreach del linguaggio C# nasconde la complessità degli enumeratori. Pertanto, è consigliabile usare foreach anziché modificare direttamente l'enumeratore.
Gli enumeratori possono essere usati per leggere i dati nella raccolta, ma non possono essere usati per modificare la raccolta sottostante.
Inizialmente, l'enumeratore viene posizionato prima del primo elemento della raccolta. Reset riporta anche l'enumeratore in questa posizione. In questa posizione, Current non è definito. Pertanto, è necessario chiamare per far avanzare MoveNext l'enumeratore al primo elemento della raccolta prima di leggere il valore di Current.
Current restituisce lo stesso oggetto finché non MoveNext viene chiamato o Reset . MoveNext imposta Current sull'elemento successivo.
Se MoveNext passa la fine della raccolta, l'enumeratore viene posizionato dopo l'ultimo elemento della raccolta e MoveNext restituisce false. Quando l'enumeratore si trova in questa posizione, le chiamate successive per MoveNext restituire falseanche . Se l'ultima chiamata a MoveNext restituisce false, Current non è definita. Per impostare Current di nuovo sul primo elemento della raccolta, è possibile chiamare Reset seguito da MoveNext.
Un enumeratore rimane valido finché la raccolta rimane invariata. Se vengono apportate modifiche alla raccolta, ad esempio l'aggiunta, la modifica o l'eliminazione di elementi, l'enumeratore viene invalidato in modo irreversibile e il relativo comportamento non è definito.
L'enumeratore non ha accesso esclusivo alla raccolta; pertanto, l'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Per garantire la thread safety durante l'enumerazione, è possibile bloccare la raccolta durante l'intera enumerazione. Per consentire l'accesso alla raccolta da parte di più thread per la lettura e la scrittura, è necessario implementare la propria sincronizzazione.
Questo metodo è un'operazione O(1) .