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

у я не могу использовать инициализатор массива с неявно типизированной переменной?

string[] words = { "apple", "strawberry", "grape" };                 // legal
string[] words = new string[]{ "apple", "strawberry", "grape" };     // legal
var words = new []{ "apple", "strawberry", "grape" };                // legal
var words = new string[]{ "apple", "strawberry", "grape" };          // legal

var words = { "apple", "strawberry", "grape", "peach" };             // ILLEGAL

Есть ли техническая причина для этого ограничения? Почему он не может вывести тип, как это было бы для:

var number = 10;
var text = "Hello";

Компилятор четко знает, что я пытаюсь сделать, он просто не допустит этого:

CS0820: невозможно присвоить инициализатор массива неявно типизированному локальному

Обновление: я скомпилировал программу, используя четыре допустимых метода объявления массива, и она генерирует тот же IL:http://pastebin.com/28JDAFbL

Это только добавляет к моей путанице. И «это так, потому что в спецификации так сказано» мало что поможет. Почему спецификация такая? В чем здесь обоснование?

Ответы на вопрос(3)

Ваш ответ на вопрос