为什么在继承类中输入static.conters的顺序与instance.conters不同

本文关键字:conters 顺序 instance 不同 static 继承 输入 为什么 | 更新日期: 2023-09-27 18:22:23

为什么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() {}
}

为什么在继承类中输入static.conters的顺序与instance.conters不同

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

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

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