Почему порядок ввода статических .ctors отличается от экземпляра .ctors в унаследованных классах? - PullRequest
3 голосов
/ 04 февраля 2012

Почему 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 Ответ

2 голосов
/ 04 февраля 2012

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

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

Затем конструктор B вызывает конструктор A, который вызывает статический конструктор A.

...