我无法绕着这个缠绕我的头。我有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参数构造函数?
答案 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。使用业务对象的任何人都将在其属性中始终具有有效值 - 默认值或使用第二个构造函数传入。