为什么编译?

时间:2009-10-23 17:22:52

标签: c# asp.net

            var cv = (new CustomValidator()
            {
                 ErrorMessage="Formato de telefone inválido",
                 ControlToValidate = "txtTelefoneIni", //<-- see the extra comma
            });

8 个答案:

答案 0 :(得分:12)

因为它是合法的语法。

真的,是。

当您使用对象初始化程序语法构造对象时,您可以在最后一项之后留下一个尾随逗号,即使您在那里结束初始化程序块也是如此。

它背后的原因可能是它以后更容易返回并编辑它,因为忘记在先前最后一项之后添加逗号是对象初始化器的#1编译时问题。 / p>

答案 1 :(得分:2)

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

答案 2 :(得分:2)

为什么不编译?

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

答案 3 :(得分:2)

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

string [] meh = {“a”,“b”,“c”,};

答案 4 :(得分:2)

它是C# language specification:Object初始值设定项的一部分。

答案 5 :(得分:1)

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

答案 6 :(得分:1)

它是C#

中的有效语法

让我们看看

var c = new List<int>() { 1, 2, 3 ,};

答案 7 :(得分:1)

FWIW,它在C中已经有效。

我最喜欢使用这种语法的原因(特别是在定义枚举时)是,当您将项添加到列表时,源控件只能看到一行中的更改(新的一行)。它没有将previusly标记为已修改(因为添加了逗号)。更具可读性差异。

我的2美分。