C# 枚举语法-是否允许在末尾使用额外的逗号?

C# 枚举语法-是否允许在末尾使用额外的逗号?,c#,C#,我惊讶地发现,C#Enum定义似乎允许在末尾加一个逗号(至少在VS2010中是这样) e、 g: public enum EnumTest1 { Abc, Def, } i、 e.“Def”后面有一个逗号。 只是想知道这是设计允许的,还是疏忽。 (知道这一点可能很好,因为如果这是一个bug,可能无法保证像上面这样的代码会在未来的C#版本中编译。)这是设计所允许的。同样,初始值设定项中也可以有尾随逗号。例如: var ints = new[] { 2, 3, 4, 3, };

我惊讶地发现,C#Enum定义似乎允许在末尾加一个逗号(至少在VS2010中是这样)

e、 g:

public enum EnumTest1
{
    Abc,
    Def,
}
i、 e.“Def”后面有一个逗号。 只是想知道这是设计允许的,还是疏忽。
(知道这一点可能很好,因为如果这是一个bug,可能无法保证像上面这样的代码会在未来的C#版本中编译。)

这是设计所允许的。同样,初始值设定项中也可以有尾随逗号。例如:

var ints = new[] { 2, 3, 4, 3, };

var obj = new SomeClass { Prop1 = "foo", Prop2 = "bar", };

我认为,允许使用尾随逗号可以更轻松地创建自动生成的代码,因为在代码中输出列表时,不必在列表逻辑中添加最后一个。

对不起,这是重复的:(也许不是?,那篇文章是为C写的,而不是为C写的。)这没有什么错,类似new obj{a=1,b=2,}的语法中也存在相同的行为这仍将在Visual Studio 2012中编译,目前已测试:dac,这是一个:和的dup。很抱歉,我没有更彻底地搜索。我很惊讶它被允许排除它,至少应该有一个选项来强制执行它。(至于为什么有几个关于这个主题的解释)它是从C/C++中“借用”来的语法,对于插入/删除枚举中的行非常方便,就像上面的一样。例如,如果您刚刚注释掉了Def,那么列表仍然有效,而不必使用逗号。如果您想添加一个新的枚举,您可以只添加它,而如果没有后面的逗号支持,您也必须编辑上面的行,否则它将无法编译。