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

C# 2.0 新特性深度解析(十四):屬性/索引子存取器可見性與靜態類

     編輯:關於C語言

屬性與索引子存取器差異化可見性

C# 2.0 允許 get/set 指定不同存取層級,常見模式:public get + protected set(或 private set),實現「對外唯讀、衍生類可寫」的封裝。

語法與規則

public class MyClass
{
    public string this[int index]
    {
        get { return _names[index]; }
        protected set { _names[index] = value; } // 索引子 set 為 protected
    }
    private string[] _names;
}
  • 存取器層級必須嚴格「小於」屬性本身層級(public 屬性可用 internal/protected/private;protected 屬性不可用 public)。
  • 只能單獨標註 get 或 set,不可同時標註雙方。

靜態類 static class

僅包含靜態成員、無需實例化的工具類/工廠類,C# 1.x 需私有建構函數防實例化;C# 2.0 原生支援:

public static class MyClassFactory
{
    public static T CreateObject() where T : new() { return new T(); }
}

編譯器強制約束

  • 禁止非靜態成員(欄位、方法、屬性、建構函數)。
  • 禁止實例化(new MyClassFactory() 編譯錯誤)。
  • 禁止繼承(隱含 sealed)。
  • 隱含 abstract(不可建立實例)。
  • 允許靜態建構函數(static MyClassFactory() { ... })。
  • 結構不支援 static 修飾。

實務價值

  • 存取器可見性:精確表達領域模型不變量(如實體 ID 唯讀、集合內部可控制新增)。
  • 靜態類:語意明確、防誤用、編譯期保證純靜態,替代單例模式部分場景。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved