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

01 Feb, 2019
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 Methodusing 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 Methodusing 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 boundsParameter name: destinationArray
Reference:
https://docs.microsoft.com/en-us/dotnet/api/system.collections.arraylist.copyto?view=netframework-4.7.2#System_Collections_ArrayList_CopyTo_System_Array_
CSharp-Collections-ArrayList
CSharp-Collections-Namespace
CSharp-method
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
C# | Multiple inheritance using interfaces
C# Dictionary with examples
Introduction to .NET Framework
Differences Between .NET Core and .NET Framework
C# | Delegates
C# | Data Types
C# | Method Overriding
C# | Class and Object
C# | Constructors
C# | Arrays