ArrayList.GetEnumerator Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve un enumerador que recorre en iteración la colección ArrayList.
Sobrecargas
GetEnumerator() |
Devuelve un enumerador para la ArrayList completa. |
GetEnumerator(Int32, Int32) |
Devuelve un enumerador para un intervalo de elementos de la matriz ArrayList. |
GetEnumerator()
- Source:
- ArrayList.cs
- Source:
- ArrayList.cs
- Source:
- ArrayList.cs
Devuelve un enumerador para la ArrayList completa.
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
Devoluciones
Interfaz IEnumerator para toda la colección ArrayList.
Implementaciones
Ejemplos
En el ejemplo siguiente se obtiene el enumerador de y ArrayListel enumerador de un intervalo de elementos de 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
'
Comentarios
La instrucción foreach
del lenguaje C# (for each
en Visual Basic) oculta la complejidad de los enumeradores. Por lo tanto, se recomienda el uso de foreach
, en lugar de manipular directamente el enumerador.
Los enumeradores pueden usarse para leer los datos de la colección, pero no para modificar la colección subyacente.
En principio, el enumerador se coloca antes del primer elemento de la colección. Reset también devuelve el enumerador a esta posición. En esta posición, el valor de propiedad Current está sin definir. Por lo tanto, debe llamar a MoveNext para adelantar el enumerador hasta el primer elemento de la colección antes de leer el valor de Current.
Current devuelve el mismo objeto hasta que se llama a MoveNext o a Reset. MoveNext establece Current en el siguiente elemento.
Si MoveNext pasa el final de la colección, el enumerador se coloca después del último elemento de la colección y MoveNext devuelve false
. Cuando el enumerador está en esta posición, las llamadas posteriores a MoveNext también devuelven false
. Si la última llamada a MoveNext se false
devuelve , Current no está definida. Para volver a establecer el valor de Current en el primer elemento de la colección, se puede llamar primero a Reset y después a MoveNext.
Un enumerador sigue siendo válido mientras la colección permanezca inalterada. Si se hacen cambios en la colección (como agregar, modificar o eliminar elementos), el enumerador queda invalidado permanentemente y su comportamiento es indefinido.
El enumerador no tiene acceso exclusivo a la colección y, por tanto, la enumeración en una colección no es intrínsicamente un procedimiento seguro para subprocesos. A fin de garantizar la seguridad de los subprocesos, se puede bloquear la colección durante toda la enumeración. Para permitir que varios subprocesos obtengan acceso de lectura y escritura a la colección, debe implementar su propia sincronización.
Este método es una O(1)
operación.
Consulte también
Se aplica a
GetEnumerator(Int32, Int32)
- Source:
- ArrayList.cs
- Source:
- ArrayList.cs
- Source:
- ArrayList.cs
Devuelve un enumerador para un intervalo de elementos de la matriz 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
Parámetros
- index
- Int32
Índice inicial de base cero de la sección de ArrayList a la que debe hacer referencia el enumerador.
- count
- Int32
Número de elementos de la sección de ArrayList a la que debe hacer referencia el enumerador.
Devoluciones
IEnumerator para el intervalo de elementos especificado de la matriz ArrayList.
Excepciones
index
y count
no especifican un intervalo válido en ArrayList.
Ejemplos
En el ejemplo siguiente se obtiene el enumerador de y ArrayListel enumerador de un intervalo de elementos de 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
'
Comentarios
La foreach
instrucción del lenguaje C# (for each
en Visual C++, For Each
Visual Basic) oculta la complejidad de los enumeradores. Por lo tanto, se recomienda el uso de foreach
, en lugar de manipular directamente el enumerador.
Los enumeradores pueden usarse para leer los datos de la colección, pero no para modificar la colección subyacente.
En principio, el enumerador se coloca antes del primer elemento de la colección. Reset también devuelve el enumerador a esta posición. En esta posición, el valor de propiedad Current está sin definir. Por lo tanto, debe llamar a MoveNext para adelantar el enumerador hasta el primer elemento de la colección antes de leer el valor de Current.
Current devuelve el mismo objeto hasta que se llama a MoveNext o a Reset. MoveNext establece Current en el siguiente elemento.
Si MoveNext pasa el final de la colección, el enumerador se coloca después del último elemento de la colección y MoveNext devuelve false
. Cuando el enumerador está en esta posición, las llamadas posteriores a MoveNext también devuelven false
. Si la última llamada a MoveNext se false
devuelve , Current no está definida. Para volver a establecer el valor de Current en el primer elemento de la colección, se puede llamar primero a Reset y después a MoveNext.
Un enumerador sigue siendo válido mientras la colección permanezca inalterada. Si se hacen cambios en la colección (como agregar, modificar o eliminar elementos), el enumerador queda invalidado permanentemente y su comportamiento es indefinido.
El enumerador no tiene acceso exclusivo a la colección y, por tanto, la enumeración en una colección no es intrínsicamente un procedimiento seguro para subprocesos. A fin de garantizar la seguridad de los subprocesos, se puede bloquear la colección durante toda la enumeración. Para permitir que varios subprocesos obtengan acceso de lectura y escritura a la colección, debe implementar su propia sincronización.
Este método es una O(1)
operación.