【问题标题】:Why can you have a comma at the end of a collection initializer?为什么集合初始值设定项的末尾可以有逗号?
【发布时间】:2011-04-10 03:56:30
【问题描述】:

这个问题一直让我感到困惑,但我猜对它发生的原因有一个非常明智的解释。

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

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

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

有谁知道为什么编译器允许这个尾随逗号?

【问题讨论】:

    标签: c# syntax c#-3.0


    【解决方案1】:

    可能主要用于代码生成器之类的工具,在哪里非常方便不必知道这是第一项还是最后一项。可以说这不应该是决定性因素,但是(编写了这样的工具)我对此表示感谢。

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          我猜有两个原因:

          1. 如果要让编译器识别并区别对待最后一行,那将是一项额外的工作。
          2. 尾随逗号实际上很方便,因为它允许排列行而不会导致不必要的构建失败。

          【讨论】:

            【解决方案5】:

            当你改变这个时:

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

            到那个:

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

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

            【讨论】:

              猜你喜欢
              • 2015-01-08
              • 2012-07-22
              • 1970-01-01
              • 2020-09-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多