static 關鍵字,無存取修飾詞 (隱含 private)Main 的類別,靜態建構函數在 Main 前執行class A { public static int X; static A() { X = B.Y + 1; } } // ④
class B { public static int Y = A.X + 1; static B() { } } // ②③
// Main 在 B → ①
// 執行順序:① Main 觸發 B 靜態建構 → ② B.Y 初始化器需 A.X → ③ 觸發 A 靜態建構 → ④ A.X = B.Y+1 → 返回 B 靜態建構 → ⑤ Main 繼續
// 結果:X=1, Y=2
using System;
class A { public static int X; static A() { X = B.Y + 1; Console.WriteLine("static A()"); } }
class B { public static int Y = A.X + 1; static B() { Console.WriteLine("static B()"); } static void Main() { Console.WriteLine($"X={A.X}, Y={B.Y}"); Console.ReadLine(); } }
輸出:
static B()
static A()
X=1, Y=2
掌握靜態初始化順序,避免循環相依導致邏輯錯誤。