为什么编译?

Cle*_*ton 5 c# asp.net

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

ang*_*son 12

因为它是合法的语法.

真的,是的.

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

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