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

C# 類別成員:靜態方法、欄位與常數/唯讀欄位差異

     編輯:關於C語言

靜態方法 vs 實例方法


class MyClass
{
    public static string StaticMethod() => "Static";
    public string InstanceMethod() => "Instance";
}

// 呼叫
MyClass.StaticMethod();        // 透過類別名
new MyClass().InstanceMethod(); // 透過實例

靜態方法無 `this`,不可存取實例成員。

欄位分類


class MyClass
{
    public int Field1;              // 實例欄位,預設 private
    public static int StaticField;  // 靜態欄位,屬於類別
    public const int ConstField = 2008;     // 編譯期常數
    public readonly int ReadonlyField;      // 執行期唯讀

    public MyClass() => ReadonlyField = 2010; // 唯讀欄位只能在宣告或建構函式指派
}

存取差異

欄位類型透過類別名透過實例可寫性
實例欄位❌✅可讀寫
靜態欄位✅✅ (不建議)可讀寫
const✅❌唯讀 (編譯期)
readonly❌✅唯讀 (執行期)

const vs readonly 核心差異

  • `const`:編譯期常數,值內嵌呼叫端 IL,**跨組件更新需重新編譯呼叫端**
  • `readonly`:執行期常數,可在建構函式動態計算,**跨組件更新無需重新編譯呼叫端**

使用建議

  • 真正不變的常數 (如 `Math.PI`) 用 `const`
  • 組態值、連線字串、執行期決定的值用 `readonly`
  • 靜態欄位謹慎使用,注意執行緒安全與初始化順序
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved