保存并加载数组的初始状态(int [,])

时间:2014-07-16 11:53:16

标签: c# arrays

我试图保存数组的状态,以便稍后可以在其初始状态下加载它。但我不知道如何使它们成为单独的实例,而不是相互引用。这是一些示例代码:

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
}

4 个答案:

答案 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)

使用Array.Clone()

创建浅表副本