C# | Copiar toda la ArrayList a 1-D Array comenzando en el índice especificado

El método ArrayList.CopyTo(Array, Int32) se utiliza para copiar todo el ArrayList en un Array unidimensional compatible, comenzando en el índice especificado del conjunto de destino.

Sintaxis:

public virtual void CopyTo (Array array, int arrayIndex);

Parámetros:

array: Es el Array unidimensional que es el destino de los elementos copiados de ArrayList. El Array debe tener una indexación basada en cero.

arrayIndex: Es el índice basado en cero en la array en el que comienza la copia.

Excepciones:

  • ArgumentNullException: si la array es nula.
  • ArgumentOutOfRangeException: si arrayIndex es menor que cero.
  • ArgumentException: si la array es multidimensional O la cantidad de elementos en la ArrayList de origen es mayor que la cantidad de elementos que puede contener la array de destino.
  • InvalidCastException: si el tipo de ArrayList de origen no se puede convertir automáticamente al tipo de array de destino .

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

Ejemplo 1:

// C# code to illustrate the
// ArrayList.CopyTo(Array, Int32)
// Method
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an ArrayList
        ArrayList myList = new ArrayList();
  
        // Adding elements to ArrayList
        myList.Add("A");
        myList.Add("B");
        myList.Add("C");
        myList.Add("D");
  
        // Creates and initializes the
        // one-dimensional target Array.
        String[] arr = new String[6];
  
        // adding elements to Array
        arr[0] = "HTML";
        arr[1] = "PHP";
        arr[2] = "Java";
        arr[3] = "Python";
        arr[4] = "C#";
        arr[5] = "OS";
  
        Console.WriteLine("Before Method: ");
  
        Console.WriteLine("\nArrayList Contains: ");
  
        // Displaying the elements in myList
        for (int i = 0; i < myList.Count; i++) {
            Console.WriteLine("myList[{0}] : {1}", i, myList[i]);
        }
  
        Console.WriteLine("\nArray Contains: ");
  
        // Displaying the elements in arr
        for (int i = 0; i < arr.Length; i++) {
            Console.WriteLine("arr[{0}] : {1}", i, arr[i]);
        }
  
        Console.WriteLine("After Method: ");
  
        // Copying the entire source ArrayList
        // to the target Array starting at
        // index 2.
        myList.CopyTo(arr, 2);
  
        Console.WriteLine("\nArrayList Contains: ");
  
        // Displaying the elements in myList
        for (int i = 0; i < myList.Count; i++) {
            Console.WriteLine("myList[{0}] : {1}", i, myList[i]);
        }
  
        Console.WriteLine("\nArray Contains: ");
  
        // Displaying the elements in arr
        for (int i = 0; i < arr.Length; i++) {
            Console.WriteLine("arr[{0}] : {1}", i, arr[i]);
        }
    }
}

Producción:

Before Method: 

ArrayList Contains: 
myList[0] : A
myList[1] : B
myList[2] : C
myList[3] : D

Array Contains: 
arr[0] : HTML
arr[1] : PHP
arr[2] : Java
arr[3] : Python
arr[4] : C#
arr[5] : OS
After Method: 

ArrayList Contains: 
myList[0] : A
myList[1] : B
myList[2] : C
myList[3] : D

Array Contains: 
arr[0] : HTML
arr[1] : PHP
arr[2] : A
arr[3] : B
arr[4] : C
arr[5] : D

Ejemplo 2:

// C# code to illustrate the
// ArrayList.CopyTo(Array, Int32)
// Method
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an ArrayList
        ArrayList myList = new ArrayList();
  
        // Adding elements to ArrayList
        myList.Add("A");
        myList.Add("B");
        myList.Add("C");
        myList.Add("D");
  
        // Creates and initializes the
        // one-dimensional target Array.
        // Here array size is only 2 i.e
        // it can hold only 3 elements.
        String[] arr = new String[2];
  
        Console.WriteLine("Before Method: ");
  
        Console.WriteLine("\nArrayList Contains: ");
  
        // Displaying the elements in myList
        for (int i = 0; i < myList.Count; i++) {
            Console.WriteLine("myList[{0}] : {1}", i, myList[i]);
        }
  
        Console.WriteLine("\nArray Contains: ");
  
        // Displaying the elements in arr
        for (int i = 0; i < arr.Length; i++) {
            Console.WriteLine("arr[{0}] : {1}", i, arr[i]);
        }
  
        Console.WriteLine("After Method: ");
  
        // using Method but It will give
        // Runtime Error as number of elements
        // in the source ArrayList is greater
        // than the number of elements that
        // the destination array can contain
        myList.CopyTo(arr, 2);
  
        Console.WriteLine("\nArrayList Contains: ");
  
        // Displaying the elements in myList
        for (int i = 0; i < myList.Count; i++) {
            Console.WriteLine("myList[{0}] : {1}", i, myList[i]);
        }
  
        Console.WriteLine("\nArray Contains: ");
  
        // Displaying the elements in arr
        for (int i = 0; i < arr.Length; i++) {
            Console.WriteLine("arr[{0}] : {1}", i, arr[i]);
        }
    }
}

Error de tiempo de ejecución:

Excepción no controlada:
System.ArgumentException: la array de destino no era lo suficientemente larga. Compruebe destIndex y longitud, y los límites inferiores de la array
Nombre del parámetro: DestinationArray

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 *