2011-03-09 24 views
1

親子クラスの静的コンストラクタはどのような順番で呼び出されますか?親クラスと子クラスの静的コンストラクタはどのような順序で呼び出されますか?

class A  { static A() { MessageBox.Show("Yaht"); } } 
class B : A { static B() { MessageBox.Show("Zee"); } } 
class C : A { static C() { MessageBox.Show("Zey"); } } 

static void Main() 
{ 
    B b = new B(); 
    C c = new C(); 
} 

コンパイラがあればテストできます。

答えて

2

出力:

Zee 
Yaht 
Zey 

..........

+0

+1は、私は同じ動作を取得します。今、なぜ?親の静的コンストラクタを最初に呼び出す方が意味がありませんか? Bがまだ初期化されていない静的フィールドAを参照した場合はどうなりますか? – Cameron

+1

その場合、Aの静的コンストラクタは、フィールドが参照される前に実行されます。 –

+0

実際、私は親の静的コンストラクタが複数回呼び出されることを期待していました。 – pyon

関連する問題