Почему не могу переопределить массив способом его определения без new?
В 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", мол, не показываем, что хотим выделить новое место под массив. Но что происходит "под капотом"? Почему мы можем так определить массив, но не переопределить?
Источник: Stack Overflow на русском