我希望一个类有两个构造函数,如下:
public MyClass()
{
// do stuff here
}
public MyClass(int num)
{
MyClass();
// do other stuff here
}
以上是实现我的目的的正确方法吗?有没有更好的简写形式?
最佳答案
public MyClass()
{
// do stuff
}
public MyClass(int num)
: this ()
{
// do other stuff with num
}
: this()
位称为构造函数初始化程序。 C# 中的每个构造函数都有一个初始化程序,它在构造函数本身的主体之前运行。默认情况下,初始化器是基类的无参数构造函数(如果该类不是从另一个类显式派生的,则为 Object
)。这可确保在构造派生类的其余部分之前正确初始化基类的成员。
可以通过两种方式覆盖每个构造函数的默认构造函数初始化程序。
: this(...)
构造指定同一类中的另一个构造函数作为它所应用的构造函数的启动器。: base(...)
构造指定基类中的构造函数(通常不是无参数构造函数,因为无论如何这是默认值)。
有关比您可能想要的更多详细信息,请参阅 C# 4.0 语言规范第 10.11 节。
关于c# - 如何简化多个构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12000096/