2
var array1 = new int[] { 1, 2, 3, 4 };
var array2 = array1;
for (var i = 0; i < array2.Length; i++)
    array2[i] += 10;
return array1;
sln
  • 611
  • 2
    Вы копируете ссылку на один и тот же массив. Почитайте про ссылочные типы. – CrazyElf Mar 30 '21 at 17:19
  • 2
    См. тж. аналогичный вопрос: https://ru.stackoverflow.com/q/1236791/213987 – A K Mar 30 '21 at 17:25

1 Answers1

5

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

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

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

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

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

aepot
  • 49,560