var cv = (new CustomValidator()
{
ErrorMessage="Formato de telefone inválido",
ControlToValidate = "txtTelefoneIni", //<-- see the extra comma
});
答案 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美分。