文章以「內部機制」為切入點,實際演示:
null/0/false/\0)。.cctor。object。object → C → B → A。public class C { public C() { Console.WriteLine("C"); } }
public class B : C { public B() { Console.WriteLine("B"); } }
public class A : B { public A() { Console.WriteLine("A"); } }
public class Demo : A { static int d = 5; public Demo() { } static void Main() { new Demo(); Console.ReadLine(); } }
輸出順序:C → B → A → Demo。驗證靜態欄位 d 在 .cctor 初始化,早於任何實例建構函式。
理解這些機制,有助於診斷「為何欄位是預設值」、「靜態建構函式拋異常導致 TypeInitializationException」、「繼承鏈建構順序錯誤」等疑難雜症。