C# | How to copy the entire ArrayList to a one-dimensional Array
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:
Please Login to comment...