Спецификация языка С# (7.6.10.4) говорит о том, что существуют порожденные деревьями выражения создания массива:
новый не-массив-тип [выражение-список] rank-specificiersopt array-initializeropt
новый массив-инициализатор массива массива
новый инициализатор массива-спецификатора
Третий предназначен для неявно типизированных массивов:
var foo = new[] { 1, 2, 3 };
Вопрос: есть ли веская причина запретить задавать размер массива явно в случае неявно типизированного массива?
Похоже на асимметричное поведение по сравнению с этим синтаксисом:
var foo = new int[3] { 1, 2, 3 };
Обновление.
Немного разъяснений. Единственное преимущество для комбинации явно заданного размера массива и инициализатора массива, которое я вижу, - это проверка времени компиляции для длины инициализатора. Если я объявил массив из трех int
s, инициализатор должен содержать три int
s.
Я думаю, одно и то же преимущество верно для неявно типизированных массивов. Конечно, использовать это преимущество или не использовать - это личное предпочтение.