.net 父类和子类的静态构造函数的调用顺序是什么?
父类和子类的静态构造函数的调用顺序是什么.net 父类和子类的静态构造函数的调用顺序是什么?,.net,static-constructor,.net,Static Constructor,父类和子类的静态构造函数的调用顺序是什么 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(); }
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();
}
我现在可以测试一下。。。如果我有可用的编译器。输出:
Zee
Yaht
Zey
我也有同样的行为。现在,为什么?首先调用父静态构造函数不是更有意义吗?如果B引用了A中某个尚未初始化的静态字段呢?在这种情况下,A的静态构造函数将在引用该字段之前运行。实际上,我希望父级的静态构造函数可以被多次调用。在这种情况下,当从B的实例构造函数调用A的实例构造函数时,静态构造函数只能在第一次访问类时运行。