Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método ArrayList.GetEnumerator (Int32, Int32)

 

Publicado: noviembre de 2016

Devuelve un enumerador para un intervalo de elementos de la matriz ArrayList.

Espacio de nombres:   System.Collections
Ensamblado:  mscorlib (en mscorlib.dll)

public virtual IEnumerator GetEnumerator(
	int index,
	int count
)

Parámetros

index
Type: System.Int32

Índice inicial de base cero de la sección de ArrayList a la que debe hacer referencia el enumerador.

count
Type: System.Int32

Número de elementos de la sección de ArrayList a la que debe hacer referencia el enumerador.

Valor devuelto

Type: System.Collections.IEnumerator

IEnumerator para el intervalo de elementos especificado de la matriz ArrayList.

Exception Condition
ArgumentOutOfRangeException

index es menor que cero.

O bien

count es menor que cero.

ArgumentException

index y count no especifican un intervalo válido en ArrayList.

El 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 detrás del último elemento de la colección y MoveNext devuelve false. Mientras el enumerador permanezca en esta posición, las llamadas subsiguientes a MoveNext también devolver false. Si la última llamada a MoveNext devuelve false, Current no está definido. 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 es válido mientras la colección no cambie. 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 operación o (1).

En las versiones de .NET Framework 1.0 y 1.1, el enumerador para un ArrayList contenedor devuelto por el Adapter método trata el segundo argumento como un límite superior en lugar de como un recuento. En el .NET Framework 2.0 el segundo argumento se trata correctamente como contador.

En el ejemplo siguiente se obtiene el enumerador para un ArrayList, y el enumerador para un intervalo de elementos de la 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
 */

Plataforma universal de Windows
Disponible desde 10
.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: