Mon*_*Zhu 15
我尝试将Int数组复制到其他2个Int数组中
首先,重要的是在这一行:
unsortedArray2 = unsortedArray;
Run Code Online (Sandbox Code Playgroud)
你不要复制unsortedArray
into 的值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)
注意:这将起作用,因为数组的内容是值类型!如果它也是引用类型,则更改其中一个项的子值也会导致目标数组中相同项的更改.