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