var array1 = new int[] { 1, 2, 3, 4 };
var array2 = array1;
for (var i = 0; i < array2.Length; i++)
array2[i] += 10;
return array1;
Asked
Active
Viewed 383 times
2
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 Answers
5
Потому что массив - это ссылочный тип.
Есть еще значимые типы. Проще всего отличить ссылочный тип от значимого - это запомнить, к чему принадлежат самые популярные базовые типы. Например class - это всегда ссылочный тип, а структура struct - это всегда значимый. Например int - это структура struct Int32, число (int[] - это массив class Array, не перепутайте).
У вас 2 переменные ссылаются на 1 и тот же массив. Но вы можете создать копию массива, если требуется.
var array2 = (int[])array1.Clone();
Тогда переменные будут ссылаться на разные массивы.
Максим Фисман
- 4,150
- 2
- 13
- 41
aepot
- 49,560