靜態類別 (static class) 僅能包含靜態成員,無法被實例化 (不可用 new),隱含密封 (sealed) 且不可繼承,也不含實例建構函式。CLR 在載入包含該類別的組件時自動載入靜態類別。
適合封裝與特定物件無關的工具方法,如數學運算、字串處理、設定值存取等。避免建立不必要的實例,提升效能與程式碼清晰度。
非靜態版本需實例化:
class CompanyInfo
{
public string GetCompanyName() { return "CompanyName"; }
public string GetCompanyAddress() { return "CompanyAddress"; }
}
改為靜態類別:
static class CompanyInfo
{
public static string GetCompanyName() { return "CompanyName"; }
public static string GetCompanyAddress() { return "CompanyAddress"; }
}
呼叫方式:CompanyInfo.GetCompanyName(),無需 new。
this。語法:static ClassName() { ... },用於初始化靜態欄位或執行一次性設定。無參數、無存取修飾詞、自動由 CLR 呼叫一次。
| 優點 | 缺點 |
|---|---|
| 編譯器強制檢查無實例成員 | 無法實作介面 |
| 無實例化開銷,存取速度快 | 不可繼承、不可多型 |
| 適合無狀態工具方法 | 靜態資料生命週期隨應用程式域,難以釋放 |
僅在方法純粹無狀態、不需依賴物件身分時使用靜態類別。若需維護狀態或支援繼承,請改用單例模式或一般類別。