Почему нельзя изменить элементы массива через присвоение новых значений?

Почему нельзя изменить элементы массива через присвоение новых значений?

Например, вот так:

int [] x = { 1, 2, 3, 4, 5 }

x = { 9, 8, 7, 6, 5 }

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

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

В старом синтаксисе C# сработает вот так

int[] x = { 1, 2, 3, 4, 5 };

x = new[] { 9, 8, 7, 6, 5 };

В новом C# (.NET 8+) можно так

int[] x = [1, 2, 3, 4, 5];

x = [9, 8, 7, 6, 5];

Это совершенно два равнозначних кода.

И это не совсем изменение элементов массива, это присваивание в переменную x нового массива из 5 элементов, заданного литералом, то есть прямо в коде.

→ Ссылка
Автор решения: rotabor

Можно так:

int[] x = { 1, 2, 3, 4, 5 };
Array.Copy((int[])[ 9, 8, 7, 6, 5 ], x, x.Length);

Здесь новые значения присваиваются элементам массива путём копирования из другого массива. Код достаточно компактный, и другой массив может быть не только константный.

→ Ссылка