为什么在集合初始值设定项结束时可以使用逗号?

这一直困扰着我,但我猜这里有一个非常明智的解释。

当你有一个集合初始化程序时,编译器允许使用尾随逗号,例如

new Dictionary { { "Foo", "Bar "}, }; 

 new List { "Foo", }; 

任何人都知道为什么编译器允许这个尾随逗号?

.NET Enumeration的类似原因允许在最后一个字段中使用逗号

可能主要用于像代码生成器这样的工具,在不知道这是第一个还是最后一个项目的情况下非常方便。 可以说这不应该是一个决定因素,但(编写过这样的工具)我很感激。

这是程序员的便利,因为开发人员可以简单地复制并粘贴最后一行来扩展列表。 C#/ .NET好像这样:)

我猜测有两个原因:

  1. 让编译器识别和处理最后一行与其他行不同,这将是额外的工作。
  2. 使用尾随逗号实际上很方便,因为它允许排列行而不会导致不必要的构建失败。

当你改变这个:

 new List { "Foo", }; 

对此:

 new List { "Foo", "Bar", }; 

Diff-Tools仅突出显示添加的行。 因此,例如在代码审查期间,您只需要检查新行。