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

Рейтинг: 0Ответов: 0Опубликовано: 02.03.2023

В C# мы можем определить массив четырьмя способами:

int[] nums = new int[4] { 1, 2, 3, 5 };
 
int[] nums2 = new int[] { 1, 2, 3, 5 };
 
int[] nums3 = new[] { 1, 2, 3, 5 };
 
int[] nums4 = { 1, 2, 3, 5 };

почему я могу переопределить массив с помощью первых трёх способов, например:

nums = new int[] {1,2,3};

но не могу с помощью 4го способа. Там среда подчёркивает красным и говорит, что ожидает выражение:

nums = {1,2}; // ошбика

В документации по поводу этого ничего не нашел. IL у всех способов одинаковый. Я считаю, что это из-за "new", мол, не показываем, что хотим выделить новое место под массив. Но что происходит "под капотом"? Почему мы можем так определить массив, но не переопределить?

Ответы

Ответов пока нет.