首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 靜態類別與靜態成員完整解析

     編輯:關於C#

靜態類別特性

靜態類別 (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 呼叫一次。

優缺點總結

優點缺點
編譯器強制檢查無實例成員無法實作介面
無實例化開銷,存取速度快不可繼承、不可多型
適合無狀態工具方法靜態資料生命週期隨應用程式域,難以釋放

最佳實踐

僅在方法純粹無狀態、不需依賴物件身分時使用靜態類別。若需維護狀態或支援繼承,請改用單例模式或一般類別。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved