Почему порядок ввода статических.ctors отличается от экземпляра.ctors в унаследованных классах?

Зачем 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 ответ

Решение

Технически конструктор экземпляра B вводится первым. Но первое, что он делает, это вызывает конструктор A и только потом переходит в определяемое пользователем тело.

Поэтому я предполагаю, что непосредственно перед конструктором B вводится статический конструктор B должен бежать.

Тогда конструктор B вызывает конструктор A, который запускает статический конструктор A,

Другие вопросы по тегам