c# - 如何简化多个构造函数?

标签 c# constructor visual-studio-2005 multiple-constructors

我希望一个类有两个构造函数,如下:

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)。这可确保在构造派生类的其余部分之前正确初始化基类的成员。

可以通过两种方式覆盖每个构造函数的默认构造函数初始化程序。

  1. : this(...) 构造指定同一类中的另一个构造函数作为它所应用的构造函数的启动器。
  2. : base(...) 构造指定基类中的构造函数(通常不是无参数构造函数,因为无论如何这是默认值)。

有关比您可能想要的更多详细信息,请参阅 C# 4.0 语言规范第 10.11 节。

关于c# - 如何简化多个构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12000096/

相关文章:

C# 跟踪(记录)两点之间的所有代码行

c# - UWP MediaElement 随机崩溃

c# - 为什么不能在 System.Transactions 命名空间中创建 Transaction 类的实例

c++ - 不同构造函数中的构造函数调用产生错误数据

python - __new__ 方法返回与其第一个参数类型不同的对象的用例是什么?

c# - 尝试激活 SecurityStampValidator 时无法解析 ISystemClock 的服务

c# - 如何从母版页更新内容页?

c# - Visual Studio/C# Windows 应用程序中的配置和程序功能

c++ - pthread 在一定时间后终止

c++ - 使用堆调试 MS VC++ 2005