Queue.CopyTo() Method in C#

This method is used to copy the Queue elements to an existing one-dimensional Array, starting at the specified array index. The elements are copied to the Array in the same order in which the enumerator iterates through the Queue and this method is an O(n) operation, where n is Count. This method comes under System.Collections namespace.

Syntax:

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

Parameters:

array: It is the one-dimensional Array that is the destination of the elements copied from Queue. The Array must have zero-based indexing.

index: It is the zero-based index in array at which copying begins.

Exceptions:

  • ArgumentNullException: If the array is null.
  • ArgumentOutOfRangeException: If the index is less than zero.
  • ArgumentException: If the array is multidimensional Or the number of elements in the source Queue is greater than the number of elements that the destination array can contain.
  • InvalidCastException: If the type of the source Queue cannot be cast automatically to the type of the destination array.

Below programs illustrate the use of above-discussed method:

Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to illustrate the
// Queue.CopyTo(Array, Int32)
// Method
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an Queue
        Queue myq = new Queue();
  
        // Adding elements to Queue
        myq.Enqueue("A");
        myq.Enqueue("B");
        myq.Enqueue("C");
        myq.Enqueue("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("\nQueue Contains: ");
  
        // Displaying the elements in myq
        foreach(Object obj in myq)
        {
            Console.WriteLine(obj);
        }
  
        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 Queue
        // to the target Array starting at
        // index 2.
        myq.CopyTo(arr, 2);
  
        Console.WriteLine("\nQueue Contains: ");
  
        // Displaying the elements in myq
        foreach(Object obj in myq)
        {
            Console.WriteLine(obj);
        }
  
        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]);
        }
    }
}

chevron_right


Output:

Before Method: 

Queue Contains: 
A
B
C
D

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

Queue Contains: 
A
B
C
D

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

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to illustrate the
// Queue.CopyTo(Array, Int32)
// Method
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an Queue
        Queue myq = new Queue();
  
        // Adding elements to Queue
        myq.Enqueue("A");
        myq.Enqueue("B");
        myq.Enqueue("C");
        myq.Enqueue("D");
  
        // Creates and initializes the
        // one-dimensional target Array.
        String[] arr = new String[2];
  
        // 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("\nQueue Contains: ");
  
        // Displaying the elements in myq
        foreach(Object obj in myq)
        {
            Console.WriteLine(obj);
        }
  
        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 Queue is greater
        // than the number of elements that
        // the destination array can contain
        myq.CopyTo(arr, 2);
  
        Console.WriteLine("\nQueue Contains: ");
  
        // Displaying the elements in myq
        foreach(Object obj in myq)
        {
            Console.WriteLine(obj);
        }
  
        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]);
        }
    }
}

chevron_right


Runtime Error:

Unhandled Exception:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at (wrapper stelemref) System.Object.virt_stelemref_sealed_class(intptr, object)

Reference:



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.