2011-08-29 17 views
0

静的およびインスタンスのコンストラクタが起動する順序が不思議です。誰かが、私に、コンストラクターが発射する命令の順序を教えてくれますか?C#静的コンストラクタの順序

静的なconstuctorsの実行順序のこの動作の背後にある説明は何ですか?次の文の出力がどうなるか

class A 
    { 
     static A() 
     { 
      Console.WriteLine("I am in A's Static Constructor"); 
     } 
     A() 
     { 
      Console.WriteLine("I am in A's Default Constructor"); 
     } 
    } 

class B:A 
{ 
    static B() 
    { 
     Console.WriteLine("I am in B's Static Constructor"); 
    } 
    B() 
    { 
     Console.WriteLine("I am in B's Default Constructor"); 
    } 
} 
class C:B 
{ 
    static C() 
    { 
     Console.WriteLine("I am in C's Static Constructor"); 
    } 
    C() 
    { 
     Console.WriteLine("I am in C's Default Constructor"); 
    } 
} 

C c = new C(); 
+10

コンパイラはありませんか? – BoltClock

+0

LinqPadを使用すると、このようなコードを簡単にテストできます。 –

答えて

3

順序は次のとおりです。 C、B、静的ctors。 A、B、C、デフォルトのctors:

アップデート:また、クラスの静的初期化子がctorsよりも逆の順序で実行する理由についてエリックリペットから、この偉大なブログの記事(Part1Part2)を参照してください。

3
I am in C's Static Constructor 
I am in B's Static Constructor 
I am in A's Static Constructor 
I am in A's Default Constructor 
I am in B's Default Constructor 
I am in C's Default Constructor 
+0

静的なconstuctorsの実行順序のこの動作の背後にある説明は何ですか? –

+0

このトピックの背景情報については、私の答えの更新を参照してください。 –

+0

私は簡単で分かりやすい説明が必要です。 –

関連する問題