Open In App

C# | How to copy the entire ArrayList to a one-dimensional Array

Last Updated : 01 Feb, 2019
Comments
Improve
Suggest changes
1 Like
Like
Report
ArrayList.CopyTo Method is used to copy the entire ArrayList to a compatible one-dimensional Array, starting at the beginning of the target array. Syntax:
public virtual void CopyTo (Array array);
Here, array is the one-dimensional Array which is the destination of the elements copied from ArrayList. The Array must have zero-based indexing. Exceptions:
  • ArgumentNullException: If the array is null.
  • ArgumentException: If the array is multidimensional OR the number of elements in the source ArrayList is greater than the number of elements that the destination array can contain.
  • InvalidCastException: If the type of the source ArrayList cannot be cast automatically to the type of the destination array.
Below programs illustrate the use of above-discussed method: Example 1:
// C# code to illustrate the
// ArrayList.CopyTo 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");
        myList.Add("E");
        myList.Add("F");
        myList.Add("G");
        myList.Add("H");

        // Creates and initializes the
        // one-dimensional target Array.
        String[] arr = new String[9];

        arr[0] = "C";
        arr[1] = "C++";
        arr[2] = "Java";
        arr[3] = "Python";
        arr[4] = "C#";
        arr[5] = "HTML";
        arr[6] = "CSS";
        arr[7] = "PHP";
        arr[8] = "DBMS";

        Console.WriteLine("Before CopyTo Method: ");

        Console.WriteLine("\nArrayList Contains: ");

        // printing ArrayList elements
        foreach(Object obj in myList)
            Console.WriteLine("{0}", obj);

        Console.WriteLine("\nString Array Contains: ");

        // printing String elements
        foreach(Object obj1 in arr)
            Console.WriteLine("{0}", obj1);

        Console.WriteLine("After CopyTo Method: ");

        // using CopyTo Method to copy
        // the entire source ArrayList
        // to the target Array starting
        // at index 0
        myList.CopyTo(arr);

        Console.WriteLine("\nArrayList Contains: ");

        // printing ArrayList elements
        foreach(Object obj in myList)
            Console.WriteLine("{0}", obj);

        Console.WriteLine("\nString Array Contains: ");

        // printing String elements
        foreach(Object obj1 in arr)
            Console.WriteLine("{0}", obj1);
    }
}
Output:
Before CopyTo Method: 

ArrayList Contains: 
A
B
C
D
E
F
G
H

String Array Contains: 
C
C++
Java
Python
C#
HTML
CSS
PHP
DBMS

After CopyTo Method: 

ArrayList Contains: 
A
B
C
D
E
F
G
H

String Array Contains: 
A
B
C
D
E
F
G
H
DBMS
Example 2:
// C# code to illustrate the
// ArrayList.CopyTo 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("HTML");
        myList.Add("CSS");
        myList.Add("PHP");
        myList.Add("DBMS");

        // 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 CopyTo Method: ");

        Console.WriteLine("\nArrayList Contains: ");

        // printing ArrayList elements
        foreach(Object obj in myList)
            Console.WriteLine("{0}", obj);

        Console.WriteLine("\nString Array Contains: ");

        // printing String elements
        foreach(Object obj1 in arr)
            Console.WriteLine("{0}", obj1);

        Console.WriteLine("After CopyTo Method: ");

        // using CopyTo 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);

        Console.WriteLine("\nArrayList Contains: ");

        // printing ArrayList elements
        foreach(Object obj in myList)
            Console.WriteLine("{0}", obj);

        Console.WriteLine("\nString Array Contains: ");

        // printing String elements
        foreach(Object obj1 in arr)
            Console.WriteLine("{0}", obj1);
    }
}
Runtime Error:
Unhandled Exception: System.ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds Parameter name: destinationArray
Reference:

Next Article

Similar Reads