Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 父类和子类的静态构造函数的调用顺序是什么?_.net_Static Constructor - Fatal编程技术网

.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的实例构造函数时,静态构造函数只能在第一次访问类时运行。