不带参数的构造函数与带有默认参数的构造函数之间的区别

时间:2015-03-12 23:50:36

标签: c# c#-4.0

C#5.0 中的这两个分数(程序员和编译器以及 CLR )之间有什么区别:

public MyClass()
{
    ;   // empty
}

public MyClass(int number = 1, string text = "hello")
{
    ;   // empty
}

2 个答案:

答案 0 :(得分:1)

如果你调用第二个ctor,那么生成的MSIL包含默认参数,就像你用两个参数直接调用ctor一样。

默认参数值只是C#的语法糖......不应该使用。请改用重载方法/ ctors。

查看http://lostechies.com/jimmybogard/2010/05/18/caveats-of-c-4-0-optional-parameters/

答案 1 :(得分:0)

就像任何函数一样,带参数的构造函数将需要它们。如果没有提供默认构造函数,编译器将自动添加默认构造函数,但前提是没有提供其他构造函数定义。如果包含带参数的构造函数,则不能再使用默认构造函数,而必须明确定义它。