我试图保存数组的状态,以便稍后可以在其初始状态下加载它。但我不知道如何使它们成为单独的实例,而不是相互引用。这是一些示例代码:
static void Main(string[] args)
{
int[,] first = new int[5, 5];
int[,] second = first;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
first[i, j] = i * j;
}
}
first[0, 0] = 10000;
first = second;
Console.WriteLine(first[0, 0]); //10000
}
答案 0 :(得分:2)
int[,] second = first;
意味着第二个数组是对第一个的引用,它们是同一个对象。您需要创建一个新的数组实例。您提到要保存数组的状态以供以后使用,为此,您必须复制原始数组,如下所示:
int[,] first = new int[5, 5];
int[,] second = new int[5, 5];
Array.Copy(first, second, first.Length);
答案 1 :(得分:1)
如果你想要一个单独的实例,你需要实例化它:
int[,] second = new int[5, 5];
可以在此处找到许多复制数组的方法:Any faster way of copying arrays in C#?
答案 2 :(得分:1)
first = second
仅复制参考。您需要逐个复制元素,就像填充第一个数组一样。
答案 3 :(得分:1)