【发布时间】:2013-01-30 14:52:02
【问题描述】:
C# 语言规范 (7.6.10.4) 说,有树种的数组创建表达式:
新的非数组类型 [ 表达式列表 ] rank-specifiersopt array-initializeropt
新的数组类型数组初始化器
新的秩说明符数组初始化器
第三个用于隐式类型数组:
var foo = new[] { 1, 2, 3 };
问题:在隐式类型数组的情况下,是否有任何重要的理由禁止显式设置数组大小?
与以下语法相比,它看起来像不对称行为:
var foo = new int[3] { 1, 2, 3 };
更新。
稍微澄清一下。我可以看到,显式设置数组大小和数组初始值设定项组合的唯一优点是在编译时检查初始值设定项长度。如果我声明了三个ints 的数组,则初始化程序必须包含三个ints。
我认为,隐式类型数组也有同样的优势。当然,使用或不使用这个优势是个人喜好。
【问题讨论】:
-
+1。我必须承认..我什至从来没有注意到这一点(我每次都是第一种方式..)。
-
您正在讨论匿名数组初始化。如果我理解你,你是在问匿名数组是否可以定义得更“紧凑”。我怀疑它们可能是这样设计的,但我没有看到任何明显的优势。这就像在沙子上画一条线。微软开发人员必须在某个地方绘制它。为什么不在那里?
-
允许这样做有什么意义?
-
@BrianRasmussen:对于显式类型的数组允许这样做有什么意义?我认为,要点是相同的 - 如果我声明必须有 3 个元素,则初始化程序 必须 包含 3 个元素。
-
@Dennis,虽然我认为这更像是一个哲学观点,但它是一个很好的 +1
标签: c#