-2

我有一个在二维数组“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”的副本?

谢谢!

4

1 回答 1

2

数组在 C# 中是可变的,因此如果您在示例中更改 a 它也会对复制产生影响,因为它们仍然具有相同的引用

所以当你写

copy = a

copy只是指向同一个a数组。

要解决这个问题,您可以使用Array.Copy ..

在您的示例中,它可能看起来像这样:

char[][] copy;
char[][] a;

Array.Copy(a, copy, a.Length);

您还可以使用Array.Clone

var copy = (char[][])a.Clone();
于 2021-04-28T04:58:03.760 回答