C#更改以前指定的值
我有一个函数,它在二维数组“a”上被调用并改变数组。但是,在调用函数之前,它也会更改以前分配给“a”的任何数组。我不知道我是否明白为什么C#更改以前指定的值,c#,call-by-value,C#,Call By Value,我有一个函数,它在二维数组“a”上被调用并改变数组。但是,在调用函数之前,它也会更改以前分配给“a”的任何数组。我不知道我是否明白为什么 char[][] copy; copy = a; // a is a also a two dimensional char array DFSfunction(a); //DFSfunction alters values of a 因此,在调用DFSfunction之后,“copy”的值也会改变。我如何保存“a”原件的副本 谢谢大家! 数组在C#中是
char[][] copy;
copy = a; // a is a also a two dimensional char array
DFSfunction(a); //DFSfunction alters values of a
因此,在调用DFSfunction之后,“copy”的值也会改变。我如何保存“a”原件的副本
谢谢大家! 数组在C#中是可变的,因此如果在示例中更改a,也会对copy产生影响,因为它们仍然具有相同的属性
所以当你写信的时候
copy=a
copy
只是指向相同的a
数组
要解决这个问题,您可以使用
在您的示例中,它可以如下所示:
char[][] copy;
char[][] a;
Array.Copy(a, copy, a.Length);
您还可以使用:
在传入阵列之前克隆阵列。执行a操作,这是通过
阵列实现的。从技术上讲,克隆可以进行浅层复制-但对于chars@phuclv来说就足够了。很遗憾,克隆没有工作,与以前发生的事情相同。我无法获得Arary。复制工作,表示必须首先初始化副本。@Nila将克隆传递给方法-不要传递a
.a[]Array2=Array.ConvertAll(Array1,a=>(a)a.clone())-
var copy = (char[][])a.Clone();