所以,我正在修改我的一个代码,最后写了这样的东西,
class TestClass
{
static void Main(string[] args)
{
var lstObj = new List<List<string>>()
{
new List<string>() { "ABC","DEF", },
new List<string>() {"GHI","JKL" },
};
}
}
Run Code Online (Sandbox Code Playgroud)
注意以下行中的额外逗号(","),
new List(){"ABC","DEF",},//在"DEF"之后
new List(){"GHI","JKL"},//'}'之后'
在意识到错字之后,我决定取消Build,更正它并重新启动Build.但是我太晚了,令我惊讶的是,Build已经成功完成了.
我只是想知道这是否是正确的语法或者它是否具有任何特殊含义.
试图查找支持此文档但未找到任何文档.尝试查找C#语言规范,理解与此相关的任何内容都超出我的意义.
C#允许在多个地方使用额外的逗号.考虑对象初始化器,C#5.0语言规范在7.6.10.2节中提到:
object-initializer:
{ member-initializer-list_opt }
{ member-initializer-list , }
member-initializer-list:
member-initializer
member-initializer-list , member-initializer
Run Code Online (Sandbox Code Playgroud)
请注意,明确允许使用额外的逗号.
我认为这是一个设计决定,摆脱没有用的编译器错误.允许使用额外的逗号不会给语言添加任何歧义.