2つのクラスがあるとしましょう:
public abstract class Foo
{
static Foo()
{
print("4");
}
}
public class Bar : Foo
{
static Bar()
{
print("2");
}
static void DoSomething()
{
/*...*/
}
}
呼び出した後Bar.DoSomething()
(Bar クラスにアクセスするのはこれが初めてであると仮定します)、イベントの順序は次のようになると予想していました。
- Foo の静的コンストラクター (ここでも、最初のアクセスを想定) > print
4
- バーの静的コンストラクター > 印刷
2
- 実行
DoSomething
42
一番下の行で、印刷されることを期待しています。
テストしたところ、2
印刷されているだけのようです。
そして、それは答えでさえありません。
この振る舞いを説明できますか?