当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C# Queue.CopyTo()用法及代码示例


此方法用于从指定的数组索引开始,将Queue元素复制到现有的一维Array。将元素以枚举器遍历队列的相同顺序复制到Array,此方法是O(n)操作,其中n是Count。这种方法属于System.Collections命名空间。

用法:

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

参数:


  • array:一维数组是从Queue复制的元素的目的地。数组必须具有从零开始的索引。
  • index:它是数组中从零开始的索引,复制从该索引开始。

异常:

  • ArgumentNullException:如果数组为null。
  • ArgumentOutOfRangeException:如果索引小于零。
  • ArgumentException:如果数组是多维的Or源队列中的元素数大于目标数组可以包含的元素数。
  • InvalidCastException:如果源队列的类型不能自动转换为目标数组的类型。

以下示例程序旨在说明上述方法的使用:

示例1:

// 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]); 
        } 
    } 
}

输出:

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

示例2:

// 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]); 
        } 
    } 
}

运行时错误:

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

参考:



相关用法


注:本文由纯净天空筛选整理自Kirti_Mangal大神的英文原创作品 Queue.CopyTo() Method in C#。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。