Почему при изменении второго массива изменяется первый, и что сделать, чтобы первый не изменялся?

var array1 = new int[] { 1, 2, 3, 4 };
var array2 = array1;
for (var i = 0; i < array2.Length; i++)
    array2[i] += 10;
return array1;

Ответы (1 шт):

Автор решения: aepot

Потому что массив - это ссылочный тип.

Есть еще значимые типы. Проще всего отличить ссылочный тип от значимого - это запомнить, к чему принадлежат самые популярные базовые типы. Например class - это всегда ссылочный тип, а структура struct - это всегда значимый. Например int - это структура struct Int32, число (int[] - это массив class Array, не перепутайте).

У вас 2 переменные ссылаются на 1 и тот же массив. Но вы можете создать копию массива, если требуется.

var array2 = (int[])array1.Clone();

Тогда переменные будут ссылаться на разные массивы.

→ Ссылка