C# | Obtener un enumerador para un rango de elementos en ArrayList

El método ArrayList.GetEnumerator(Int32, Int32) se usa para obtener un enumerador para un rango de elementos en ArrayList .

Sintaxis:

System.Collections.IEnumerator virtual público GetEnumerator (índice int, recuento int);

Parámetros:

índice: es el índice inicial de base cero de tipo Int32 de la sección ArrayList al que debe hacer referencia el enumerador.

count: Es el número de elementos del tipo Int32 en la sección ArrayList a los que debe hacer referencia el enumerador.

Valor de retorno: este método devuelve un IEnumerator para el rango de elementos especificado en ArrayList.

Excepciones:

  • ArgumentOutOfRangeException: si el índice o el recuento es menor que cero.
  • ArgumentException: si el índice y el recuento no especifican un rango válido en ArrayList.

Los siguientes programas ilustran el uso del método mencionado anteriormente:

Ejemplo 1:

// C# code to get an enumerator for a
// range of elements in the ArrayList
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an ArrayList
        ArrayList myList = new ArrayList();
  
        // adding elements in myList
        myList.Add(14);
        myList.Add(45);
        myList.Add(78);
        myList.Add(48);
        myList.Add(49);
        myList.Add(51);
        myList.Add(77);
  
        // To get an Enumerator
        // for the ArrayList
        IEnumerator enumerator = myList.GetEnumerator();
  
        // If MoveNext passes the end of the
        // collection, the enumerator is positioned
        // after the last element in the ArrayList
        // and MoveNext returns false.
        while (enumerator.MoveNext()) {
  
            Console.WriteLine(enumerator.Current);
        }
  
        Console.WriteLine("After GetEnumerator(Int32, Int32) Method: ");
  
        // To get an Enumerator for a range
        // of elements of the ArrayList
        // here index is 3 and count is 2
        IEnumerator e = myList.GetEnumerator(3, 2);
  
        // If MoveNext passes the end of the
        // collection, the enumerator is positioned
        // after the last element in the ArrayList
        // and MoveNext returns false.
        while (e.MoveNext()) {
            Object obj1 = e.Current;
            Console.WriteLine(obj1);
        }
    }
}

Producción:

14
45
78
48
49
51
77
After GetEnumerator(Int32, Int32) Method: 
48
49

Ejemplo 2:

// C# code to get an enumerator for a
// range of elements in the ArrayList
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an ArrayList
        ArrayList myList = new ArrayList();
  
        // adding elements in myList
        myList.Add("C");
        myList.Add("C++");
        myList.Add("Java");
        myList.Add("Python");
        myList.Add("C#");
        myList.Add("HTML");
        myList.Add("CSS");
  
        Console.WriteLine("After GetEnumerator(Int32, Int32) Method: ");
  
        // To get an Enumerator for a range
        // of elements of the ArrayList
        // this will give error as index is
        // less than zero
        IEnumerator e = myList.GetEnumerator(-1, 2);
  
        // If MoveNext passes the end of the
        // collection, the enumerator is positioned
        // after the last element in the ArrayList
        // and MoveNext returns false.
        while (e.MoveNext()) {
            Object obj1 = e.Current;
            Console.WriteLine(obj1);
        }
    }
}

Error de tiempo de ejecución:

Excepción no controlada:
System.ArgumentOutOfRangeException: se requiere un número no negativo.
Nombre del parámetro: índice

Nota:

  • La instrucción foreach del lenguaje C# oculta la complejidad de los enumeradores. Por lo tanto, se recomienda usar foreach , en lugar de manipular directamente el enumerador.
  • Los enumeradores se pueden usar para leer los datos de la colección, pero no se pueden usar para modificar la colección subyacente.
  • Current devuelve el mismo objeto hasta que se llama MoveNext o Reset. MoveNext establece Current en el siguiente elemento.
  • Un enumerador sigue siendo válido mientras la colección permanezca sin cambios. Si se realizan cambios en la colección, como agregar, modificar o eliminar elementos, el enumerador se invalida irremediablemente y su comportamiento no está definido.
  • Este método es una operación O(1).

Referencia:

Publicación traducida automáticamente

Artículo escrito por Kirti_Mangal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *