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: