C# - 使用CopyTo()-Help进行数组复制

时间:2009-09-04 16:45:46

标签: c#

我必须将以下int数组复制到Array:

int[] intArray=new int[] {10,34,67,11};

我试过

Array copyArray=Array.CreateInstance(typeof(int),intArray.Length,intArray);
intArray.CopyTo(copyArray,0);

但是,我似乎犯了一个错误,所以我没有得到结果。

4 个答案:

答案 0 :(得分:8)

您是否知道int[]已经是Array?如果您只需要将其传递给接受Array的内容,并且您不介意更改内容,只需传入原始引用即可。

另一种方法是克隆它:

int[] clone = (int[]) intArray.Clone();

如果确实需要使用Array.CopyTo,那么请使用其他答案 - 否则,此路线会更简单:)

答案 1 :(得分:7)

这有效:

int[] intArray = new int[] { 10, 34, 67, 11 };
Array copyArray = Array.CreateInstance(typeof(int), intArray.Length);
intArray.CopyTo(copyArray, 0);
foreach (var i in copyArray)
    Console.WriteLine(i);

你的Array.CreateInstance行中有一个额外的“intArray”。

话虽如此,如果您不需要Array.CreateInstance方法(不确定这是否是您尝试解决的问题),这可以简化:

int[] intArray = new int[] { 10, 34, 67, 11 };
int[] copyArray = new int[intArray.Length];
intArray.CopyTo(copyArray, 0);

更简单:

int[] intArray = new int[] { 10, 34, 67, 11 };
int[] copyArray = (int[])intArray.Clone();

答案 2 :(得分:4)

请改为尝试:

int[] copyArray = new int[intArray.Length];
Array.Copy(intArray, copyArray, intArray.Length);

答案 3 :(得分:1)

在这种特殊情况下,只需使用

即可
int[] copyArray = (int[]) intArray.Clone();