隐式类型数组:为什么我们不能显式设置数组大小?

Den*_*nis 13 c#

C#语言规范(7.6.10.4)说,有树种类的数组创建表达式:

new non-array-type [expression-list] rank-specifiersopt array-initializeropt
new array-type array-initializer
new rank-specifier array-initializer

第三个用于隐式类型化数组:

var foo = new[] { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)

问题:在隐式类型化数组的情况下,是否有任何重要理由禁止显式设置数组大小?

与此语法相比,它看起来像不对称行为:

var foo = new int[3] { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)

更新.

一点澄清.我可以看到显式设置数组大小和数组初始化程序组合的唯一优势是初始化程序长度的编译时检查.如果我声明了三个ints 的数组,初始化器必须包含三个ints.

我认为,隐式类型数组也有同样的优势.当然,使用这种优势或不使用是个人偏好.

and*_*ndy 2

不需要等级说明符,因为它已经由初始化列表中的元素数量提供。

  • 我想他意识到了这一点。问题似乎是,为什么这样而不是那样?OP 可以说定义了固定大小的匿名数组。我想说的是,只要其含义和形式一致,所有方法都同样合理。 (4认同)