public class Test
{
public int C = 0;
public static Test My = new Test(2); // 靜態欄位初始化為自身實例
public int X;
public Test(int x) { X = x; }
}
class Program
{
static void Main()
{
Test me = Test.My;
Console.WriteLine(me.X); // 輸出 2
}
}
此時 `My` 已指向一個完整初始化的 `Test` 實例。
| 類型 | 語法 | 用途 | 呼叫時機 |
|---|---|---|---|
| 靜態建構函數 | `static Test() { }` | 初始化靜態欄位、執行一次性邏輯 | 型別第一次被存取前,CLR 自動呼叫,執行一次 |
| 實例建構函數 | `public Test() { }` | 初始化實例欄位 | 每次 `new Test()` 時呼叫 |
| 私有建構函數 | `private Test() { }` | 單例模式、工廠模式、防止外部實例化 | 僅類別內部可呼叫 |
Lazy<T> 或雙重檢查鎖定,避免靜態初始化順序陷阱。