C#5.0 中的这两个分数(程序员和编译器以及 CLR )之间有什么区别:
public MyClass()
{
; // empty
}
public MyClass(int number = 1, string text = "hello")
{
; // empty
}
答案 0 :(得分:1)
如果你调用第二个ctor,那么生成的MSIL包含默认参数,就像你用两个参数直接调用ctor一样。
默认参数值只是C#的语法糖......不应该使用。请改用重载方法/ ctors。
查看http://lostechies.com/jimmybogard/2010/05/18/caveats-of-c-4-0-optional-parameters/
答案 1 :(得分:0)
就像任何函数一样,带参数的构造函数将需要它们。如果没有提供默认构造函数,编译器将自动添加默认构造函数,但前提是没有提供其他构造函数定义。如果包含带参数的构造函数,则不能再使用默认构造函数,而必须明确定义它。