为什么在集合初始化器的末尾有逗号?

时间:2010-09-09 09:03:59

标签: c# syntax c#-3.0

这一直困惑我,但我猜测有一个非常明智的解释为什么会发生。

当你有一个集合初始值设定项时,编译器允许使用尾随逗号,例如:

new Dictionary<string, string>
{
    { "Foo", "Bar "},
};

new List<string>
{
    "Foo",
};

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

5 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:5)

答案 2 :(得分:4)

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

答案 3 :(得分:3)

我猜测有两个原因:

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

答案 4 :(得分:1)

当你改变这个时:


     new List<string>
     { 
         "Foo", 
     }; 

到那个:


     new List<string>
     { 
         "Foo", 
         "Bar", 
     }; 

Diff-Tools只会突出显示添加的行。 所以例如在代码审查期间,您只需检查新行。