如何使用无参数构造函数中的2个参数调用构造函数?

时间:2014-12-05 03:45:30

标签: c# constructor default-constructor

我无法绕着这个缠绕我的头。我有2个构造函数。第一个有2个参数:

public Instrument(string name, string category)
{
    this.Name = name;
    this.Category = category;
}

然后我有一个默认(无参数)构造函数,其默认值为常量:

public Instrument()            
{
    this.Name = DefaultName;
    this.Category = DefaultCategory;
}

我也应该从无参数构造函数中调用2参数构造函数。我该怎么做呢?我也质疑为什么这甚至是必要的。如果从默认值中调用2参数,您将如何将默认值传递给应用程序?所以我想我的主要问题是如何从默认构造函数中调用2参数构造函数?

2 个答案:

答案 0 :(得分:8)

通过从默认值中调用两个arg构造函数,传递默认值,如下所示:

public Instrument() : this(DefaultName, DefaultCategory)
{

}

答案 1 :(得分:2)

这就是你可以做到的......

public class Instrument
{
    public string Name;
    public string Category;

    public Instrument()
        : this("DefaultName", "DefaultCategory")
    {

    }

    public Instrument(string name, string category)
    {
        this.Name = name;
        this.Category = category;
    }
}

现在回答问题为什么这甚至是必要的。 ...

这是为了确保如果你遇到代码中的实例化对象 - 无论如何实例化(使用构造函数) - 它的属性中总是有有效值 Name < / strong>&amp;的类别即可。

基本上,它可能会使您的业务对象无bug。使用业务对象的任何人都将在其属性中始终具有有效值 - 默认值或使用第二个构造函数传入。