为什么输入static .ctors的顺序与继承类中的实例.ctors不同?

时间:2012-02-04 13:05:08

标签: c# .net c#-4.0 constructor static-constructor

为什么var b = new B()首先进入 static B() .ctor而不是 static A() .ctor,而不是反之亦然实例构造函数( public A() 而不是 public B() )?

public class A
{
    static A() {}
    public A() {}
}

public class B : A
{
    static B() {}
    public B() {}
}

1 个答案:

答案 0 :(得分:2)

从技术上讲,首先输入B的实例构造函数。但它首先要做的是调用A的构造函数,然后才转到用户定义的主体。

所以我假设在输入B的构造函数之前,B的静态构造函数需要运行。

然后B的构造函数调用A的构造函数,它触发A的静态构造函数。