📜  C#|如何将整个ArrayList复制到一维数组

📅  最后修改于: 2021-05-29 21:07:15             🧑  作者: Mango

ArrayList.CopyTo方法用于从目标数组的开头开始,将整个ArrayList复制到兼容的一维Array。

句法:

public virtual void CopyTo (Array array);

在这里, array是一维Array,它是从ArrayList复制的元素的目的地。数组必须具有从零开始的索引。

例外情况:

  • ArgumentNullException:如果数组为null。
  • ArgumentException:如果数组是多维数组,或者源ArrayList中的元素数大于目标数组可以包含的元素数。
  • InvalidCastException:如果无法将源ArrayList的类型强制转换为目标array的类型。

下面的程序说明了上面讨论的方法的使用:

范例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);
    }
}

输出:

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

范例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);
    }
}

运行时错误:

参考:

  • https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.arraylist.copyto?view=netframework-4.7.2#System_Collections_ArrayList_CopyTo_System_Array_