Почему я не могу использовать инициализатор массива с неявно типизированной переменной?
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
Это просто добавляет к моей путанице. И "это так, потому что спецификация говорит так", мало помогает. Почему спецификация такая? В чем здесь причина?