Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#更改以前指定的值_C#_Call By Value - Fatal编程技术网

C#更改以前指定的值

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#中是

我有一个函数,它在二维数组“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#中是可变的,因此如果在示例中更改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();