【问题标题】:In what order are the static constructors of parent and child classes called?父类和子类的静态构造函数是按什么顺序调用的?
【发布时间】:2011-03-09 00:22:07
【问题描述】:

父类和子类的静态构造函数是按什么顺序调用的?

class A     { static A() { MessageBox.Show("Yaht"); } }
class B : A { static B() { MessageBox.Show("Zee");  } }
class C : A { static C() { MessageBox.Show("Zey");  } }

static void Main()
{
    B b = new B();
    C c = new C();
}

如果我有可用的编译器,我现在可以测试它。

【问题讨论】:

    标签: .net static-constructor


    【解决方案1】:

    输出:

    Zee
    Yaht
    Zey
    

    .......

    【讨论】:

    • +1,我得到了同样的行为。现在,为什么?首先调用父静态构造函数不是更有意义吗?如果 B 引用了 A 中尚未初始化的某个静态字段怎么办?
    • 在这种情况下,A的静态构造函数将在字段被引用之前运行。
    • 其实我是希望能多次调用父类的静态构造函数。
    • 静态构造函数仅在第一次类被访问时运行——在这种情况下,当从 B 的实例构造函数调用 A 的实例构造函数时。
    猜你喜欢
    • 2015-04-24
    • 2011-09-24
    • 2013-12-25
    • 2011-02-07
    • 2011-03-24
    • 1970-01-01
    • 2018-02-28
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多