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

C# static 關鍵字深度解析(一)

     編輯:關於C語言

auto 與 static:一對被遺忘的關鍵字

理解 static 必須先認識 auto。我們日常宣告的區域變數預設皆為 auto(隱式),意指「由程式自動管理生命週期」:進入作用域時配置,離開時釋放。而 static 則打破此規則——變數在程式啟動時配置,直到程式結束才釋放,遵循程式生命週期而非區塊生命週期。

void Func()
{
    int a;           // auto int a; 每次呼叫重新配置
    static int b;    // 程式啟動時配置,全程唯一
}

多執行緒同時呼叫 Func() 時,各自擁有獨立的 a,但共享同一個 b,這在多執緒環境下需特別注意同步問題。

類別靜態成員

class A
{
    private static int s_value; // 僅宣告
};

// 必須在 .cpp 中定義並初始化(無 static 修飾)
int A::s_value = 0;
  • 屬於類別而非實例,所有實例共享同一份記憶體。
  • 程式啟動階段(main 前)即完成配置與建構,若為類別型別會呼叫其建構函式。
  • 可視為帶有類別存取保護的全域變數(A::s_value)。

為什麼這很重要?

混淆 auto(預設)與 static 的語義,是導致資源洩漏、多執行緒競態、單例模式實作錯誤的常見根源。掌握兩者的生命週期差異,是撰寫健壯 C# 程式的基石。

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