将数组复制到数组

ARX*_*ARX 9 c# arrays copy

我对阵列有点问题.我是C#的新手.

我尝试将Int数组复制到其他2个Int数组中

unsortedArray = randomNumbers();

unsortedArray2 = unsortedArray;
unsortedArray3 = unsortedArray;
Run Code Online (Sandbox Code Playgroud)

但是,如果我对unsortedArray2进行排序,则unsortedArray3也会被排序.

有人能帮我吗?

Mon*_*Zhu 15

我尝试将Int数组复制到其他2个Int数组中

首先,重要的是在这一行:

unsortedArray2 = unsortedArray;
Run Code Online (Sandbox Code Playgroud)

你不要复制unsortedArrayinto 的值unsortedArray2.它=被称为赋值运算符

赋值运算符(=)将其右侧操作数的值存储在存储位置,

现在,要了解这种现象,您需要知道的第二件事是C#Reference Types和Value类型中有两种类型的对象

文档实际上很好地解释了它:

引用类型的变量存储对其数据(对象)的引用,而值类型的变量直接包含其数据.对于引用类型,两个变量可以引用同一个对象; 因此,对一个变量的操作可能会影响另一个变量引用的对象.

解决方案可以是使用Array.Copy方法.

Array.Copy(unsortedArray, 0, unsortedArray2 , 0, unsortedArray.Length);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,CopyTo方法也适用

unsortedArray.CopyTo(unsortedArray2 , 0);
Run Code Online (Sandbox Code Playgroud)

注意:这将起作用,因为数组的内容是值类型!如果它也是引用类型,则更改其中一个项的子值也会导致目标数组中相同项的更改.