Сохранить и загрузить начальное состояние массива (int [,])

1

Я пытаюсь сохранить состояние массива, чтобы потом загрузить его в исходное состояние. Но я не знаю, как сделать их отдельными примерами, а не ссылаться друг на друга. Вот пример кода:

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
    Итак ... вы хотите выделить копию first и назначить его second ?
  • 0
    Итак, вы хотите сделать копию первого?
Показать ещё 1 комментарий
Теги:
arrays

4 ответа

2
Лучший ответ
int[,] second = first;

Означает, что второй массив является ссылкой на первый, они являются одним и тем же объектом. Вам нужно создать новый экземпляр массива. Вы упомянули, что хотите сохранить состояние массива для последующего использования, и для этого вам необходимо скопировать исходный массив следующим образом:

int[,] first = new int[5, 5];
int[,] second = new int[5, 5];
Array.Copy(first, second, first.Length);
  • 0
    Именно то, что я искал, спасибо!
1
first = second

Только копирует ссылку. Вам нужно скопировать элементы по одному, точно так же, как вы заполняете первый массив.

1

Если вам нужен отдельный экземпляр, вам необходимо создать его экземпляр:

int[,] second = new int[5, 5];

Здесь можно найти множество способов копирования массива: любой более быстрый способ копирования массивов на С#?

1

Создайте мелкую копию с помощью Array.Clone()

  • 0
    Чтобы использовать это, вам понадобится приведение, например int[,] second = (int[,])first.Clone() .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню