Я пытаюсь сохранить состояние массива, чтобы потом загрузить его в исходное состояние. Но я не знаю, как сделать их отдельными примерами, а не ссылаться друг на друга. Вот пример кода:
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
}
int[,] second = first;
Означает, что второй массив является ссылкой на первый, они являются одним и тем же объектом. Вам нужно создать новый экземпляр массива. Вы упомянули, что хотите сохранить состояние массива для последующего использования, и для этого вам необходимо скопировать исходный массив следующим образом:
int[,] first = new int[5, 5];
int[,] second = new int[5, 5];
Array.Copy(first, second, first.Length);
first = second
Только копирует ссылку. Вам нужно скопировать элементы по одному, точно так же, как вы заполняете первый массив.
Если вам нужен отдельный экземпляр, вам необходимо создать его экземпляр:
int[,] second = new int[5, 5];
Здесь можно найти множество способов копирования массива: любой более быстрый способ копирования массивов на С#?
Создайте мелкую копию с помощью Array.Clone()
int[,] second = (int[,])first.Clone()
.
first
и назначить егоsecond
?