C# 如何从无参数构造函数调用具有2个参数的构造函数?
我在这件事上有困难。我有两个构造器。第一个有两个参数:C# 如何从无参数构造函数调用具有2个参数的构造函数?,c#,constructor,default-constructor,C#,Constructor,Default Constructor,我在这件事上有困难。我有两个构造器。第一个有两个参数: public Instrument(string name, string category) { this.Name = name; this.Category = category; } 然后我有一个默认(无参数)构造函数,其中包含默认值的常量: public Instrument() { this.Name = DefaultName; this.Category = Defa
public Instrument(string name, string category)
{
this.Name = name;
this.Category = category;
}
然后我有一个默认(无参数)构造函数,其中包含默认值的常量:
public Instrument()
{
this.Name = DefaultName;
this.Category = DefaultCategory;
}
我还应该从无参数构造函数调用2参数构造函数。我该怎么做?我还质疑为什么这是必要的。如果从默认值调用2参数,如何将默认值传递给应用程序?因此,我想我的主要问题是如何从默认构造函数调用2参数构造函数?通过从默认构造函数调用两个参数构造函数,传递默认值,如下所示:
public Instrument() : this(DefaultName, DefaultCategory)
{
}
通过从默认构造函数调用两个参数构造函数,传递默认值,如下所示:
public Instrument() : this(DefaultName, DefaultCategory)
{
}
这就是你能做到的
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&Category中始终具有有效值
基本上,它可能使您的业务对象没有bug。任何使用您的业务对象的人在其属性中都将始终具有有效值-默认值或使用第二个构造函数传入的值。这就是您可以做到的
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&Category中始终具有有效值
基本上,它可能使您的业务对象没有bug。任何使用您的业务对象的人在其属性中都将始终具有有效值-默认值或使用第二个构造函数传入的值。关于将默认值传入默认构造函数:目的通常是通过类/库作者内置的常量提供默认值来简化类的使用。因此,寻求使用默认值的客户机只需调用无参数的构造函数,这就获得了不必提供2个参数的预期好处,除非她或他需要覆盖默认值。因此,在上面的“this”部分调用2个参数构造函数?但这只是为了通过默认设置?也许我想得太多了。我的意思是,如果你调用2参数构造函数,你将得到2个参数,而不是默认值。是的,这个关键字引用当前类,所以
this(arg1,arg2)
调用构造函数,传递默认值。这与用户调用传递默认信息的2参数构造函数基本相同,如果用户需要有关将默认值传递到默认构造函数的默认信息,则无需这样做:其目的通常是通过类/库作者内置的常量提供默认值来简化类的使用。因此,寻求使用默认值的客户机只需调用无参数的构造函数,这就获得了不必提供2个参数的预期好处,除非她或他需要覆盖默认值。因此,在上面的“this”部分调用2个参数构造函数?但这只是为了通过默认设置?也许我想得太多了。我的意思是,如果你调用2参数构造函数,你将得到2个参数,而不是默认值。是的,这个关键字引用当前类,所以this(arg1,arg2)
调用构造函数,传递默认值。这与用户调用传递默认信息的2参数构造函数基本相同,只是如果用户需要默认信息,则不必这样做