代码之家  ›  专栏  ›  技术社区  ›  Cleiton

为什么要编译?

  •  5
  • Cleiton  · 技术社区  · 15 年前
                var cv = (new CustomValidator()
                {
                     ErrorMessage="Formato de telefone inválido",
                     ControlToValidate = "txtTelefoneIni", //<-- see the extra comma
                });
    
    8 回复  |  直到 9 年前
        1
  •  12
  •   Lasse V. Karlsen    15 年前

    因为它是合法的语法。

    真的。

    当使用对象初始值设定项语法构造对象时,允许在最后一个项后留下一个尾随逗号,即使在该项后结束初始值设定项块。

    其背后的原因可能是,它使得稍后返回并编辑更容易,因为忘记在前一项后面添加逗号是对象初始值设定项的1编译时问题。

        2
  •  2
  •   Tamás Szelei    15 年前

    这是故意的。也适用于枚举成员。(这样就更容易添加更多内容)

        3
  •  2
  •   yfeldblum    15 年前

    为什么不编译?

    这种类型的语法在Python中也是合法的。

        4
  •  2
  •   Kleinux    15 年前

    它编译是因为它是有效的C语法。你也可以对数组做同样的事情

    字符串[]meh=“a”,“b”,“c”,

        5
  •  2
  •   Darin Dimitrov    15 年前

    它是 C# language specification :对象初始值设定项。

        6
  •  1
  •   RichN    15 年前

    因为这是允许的。 一般来说,允许这种形式的尾随逗号(并实际使用该“特权”)是有用的,这样程序员就可以向列表中添加更多的项,而不会有忘记在前一项末尾添加逗号的风险。

        7
  •  1
  •   anishMarokey FIre Panda    15 年前

    它是C语言中的有效语法#

    让我们看看

    var c = new List<int>() { 1, 2, 3 ,};
    
        8
  •  1
  •   Serge Wautier    9 年前

    fwiw,它已经在c中有效。

    我最喜欢使用这种语法(尤其是在定义枚举时)的原因是,当您向列表中添加一个项时,源代码管理只在一行(新的一行)中看到更改。它不会将前一个标记为已修改(因为添加了逗号)。更具可读性的差异。

    我的2分钱。