以下C#片段在我的Visual Studio 2010下编译并运行:
struct Foo {
public int A;
}
// ..
var foo = new Foo { A = 1, };
Run Code Online (Sandbox Code Playgroud)
请注意对象初始值设定项中的尾随逗号.
这是合法的C#并且它有任何有用的用途,或者我刚刚遇到(良性)编译器错误?
Yes it is very much legal and useful in C# to have trailing commas and no it is not a (benign) compiler bug.
为方便起见,Microsoft添加了该功能 - 如果您不需要特殊情况下的第一个或最后一个项目,则以编程方式生成代码时特别有用.您将在枚举声明中找到类似的语法,在对象初始化,数组,列表等中分配属性.
它允许使用尾随逗号简单地使得更加统一,以便在初始化程序中包含随时间变化长度的项目列表.例如,由于您在那里有逗号,因此在末尾添加新项目仅涉及编辑一行,而不是编辑一行以添加逗号,另一行添加新内容.
此外,如果你注释掉最后一个选项怎么办?
enum Cars
{
Honda,
Hyundai,
//Ford
}
Run Code Online (Sandbox Code Playgroud)
请参阅Jon Skeet的.NET答案现在支持数组中的尾随逗号,就像python一样
Food for thought: If it had no use why would it be there in the first place?