如何强制在C#中调用基础构造函数?

时间:2008-11-27 15:43:49

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

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

public class BasePage

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

public BasePage()
{
    // Important code here
}

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

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

如何执行此操作(最好在编译时)?

4 个答案:

答案 0 :(得分:25)

将始终在某个时刻调用基础构造函数。如果你调用this(...)而不是base(...),那么它会调用同一个类中的另一个构造函数 - 这又需要调用另一个兄弟构造函数或父构造函数。迟早你总会得到一个构造函数,它可以显式地或隐式地调用base(...)来调用基类的无参数构造函数。

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

答案 1 :(得分:9)

如果不调用任何明确接受参数的其他基类构造函数,则自动运行不带参数的基类构造函数。

答案 2 :(得分:3)

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

答案 3 :(得分:1)

总是需要调用其中一个基本构造函数,并且在未明确声明基本构造函数时调用默认构造函数。

编辑:为了清晰起见而改写。