微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# 更改先前分配的值

如何解决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,它也会对复制产生影响,因为它们仍然具有相同的 reference

所以当你写

copy = a

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

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

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

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

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

您也可以使用 Array.Clone :

var copy = (char[][])a.Clone();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。