【发布时间】:2010-04-20 10:40:52
【问题描述】:
使用类似的简单类型
class A {
public int X, Y;
}
使用对象初始化器,可以编写
var a = new A { X=0, Y=0 };
但是编译器也接受以下内容:
var a = new A { X=0, Y=0, }; // notice the additional ','
int[] v = new int[] { 1, 2, }; 也一样
这看起来有点奇怪……他们是不是忘记在编译器中拒绝额外的','还是这背后有更深的含义?
【问题讨论】:
-
他们没有忘记任何东西,这是语言设计中经过深思熟虑的一部分。 (在 Microsoft C#3 规范中,在第 7.5.10.2 节中对对象初始化器进行了说明,在第 7.5.10.3 节中对集合初始化器进行了说明。)
-
仅供参考,这个技巧也适用于枚举。而且我们还允许在类声明后面加上一个多余的分号,因为一些 C++ 程序员习惯于键入一个。