【问题标题】:How can I force the base constructor to be called in C#?如何强制在 C# 中调用基本构造函数?
【发布时间】:2010-09-24 08:32:24
【问题描述】:

我有一个 BasePage 类,所有其他页面都从该类派生:

public class BasePage

此 BasePage 有一个构造函数,其中包含必须始终运行的代码:

public BasePage()
{
    // Important code here
}

我想强制派生类调用基构造函数,如下所示:

public MyPage
    : base()
{
    // Page specific code here
}

我怎样才能强制执行(最好在编译时)?

【问题讨论】:

    标签: c# asp.net oop constructor c#-2.0


    【解决方案1】:

    基础构造函数总是会在某个时候被调用。如果您调用this(...) 而不是base(...),那么它会调用同一个类中的另一个构造函数——它必须再次调用另一个同级构造函数或父构造函数。迟早你总会得到一个构造函数,它要么显式调用base(...),要么隐式调用基类的无参数构造函数。

    请参阅this article 了解有关构造函数链接的更多信息,包括各个位的执行点(例如变量初始化器)。

    【讨论】:

      【解决方案2】:

      如果您不显式调用任何其他带参数的基类构造函数,则不带参数的基类构造函数会自动运行。

      【讨论】:

      • 这是否意味着我可以删除包含 : base() 的行?
      【解决方案3】:

      基类构造函数总是被调用,即使你没有显式调用它。所以你不需要做任何额外的工作来确保发生这种情况。

      【讨论】:

        【解决方案4】:

        其中一个基构造函数总是需要被调用,当基构造函数没有显式声明时调用默认的。

        编辑:为了清楚起见,重新措辞。

        【讨论】:

          猜你喜欢
          • 2015-07-19
          • 1970-01-01
          • 2010-10-12
          • 2011-03-11
          • 1970-01-01
          • 1970-01-01
          • 2012-06-29
          • 2012-09-28
          • 2015-11-16
          相关资源
          最近更新 更多