我有一个函数,它在二维数组"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
数组。
要解决这个问题,您可以使用 Array.Copy..
在您的示例中,它可能看起来像这样:
char[][] copy;
char[][] a;
Array.Copy(a, copy, a.Length);
您也可以使用 Array.Clone :
var copy = (char[][])a.Clone();