給定兩個類別:
class A {
public static int X = B.Y;
static A() { ++X; }
}
class B {
public static int Y = A.X;
static B() { ++Y; }
}
呼叫 Debug.WriteLine(A.X) 與 Debug.WriteLine(B.Y),輸出為 2, 1。
A.X → 觸發 A 初始化X = B.Y → 觸發 B 初始化Y = A.X → 此時 A 尚未完成初始化,A.X 為預設值 0 → Y = 0++Y → Y = 1X = 1++X → X = 2最終:A.X = 2, B.Y = 1。
public sealed class Singleton {
private static readonly Singleton _instance;
static Singleton() { _instance = new Singleton(); }
public static Singleton Instance { get { return _instance; } }
private Singleton() { }
}
靜態建構函數確保執行緒安全、延遲初始化且僅執行一次。