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

C# 銳利體驗 (八) (1):索引器核心語法與編譯原理

     編輯:關於C語言

索引器

索引器是 C# 引入的新型類別成員,讓物件能像陣列一樣方便、直觀被引用。索引器類似屬性,但可有參數列表,且只能作用於實例物件,不可直接作用於類別。

典型索引器設計

class MyClass
{
    public object this[int index]
    {
        get { /* 取資料 */ }
        set { /* 存資料 */ }
    }
}
  • 無屬性/方法名稱,this 關鍵字清楚表達索引器引用物件特徵。
  • value 關鍵字在 set 陳述區塊有參數傳遞意義。

編譯器實現原理

從 IL 中介代碼看,索引器被實現為兩個方法:

class MyClass
{
    public object get_Item(int index) { /* 取資料 */ }
    public void set_Item(int index, object value) { /* 存資料 */ }
}

因此不能在聲明索引器的類別中再聲明 get_Item/set_Item 方法,編譯器會報錯。這些隱含方法同樣可被調用、繼承等操作,與自行實現方法無異。掌握編譯實現有助於理解索引器行為。

修飾詞與繼承

  • 五種存取保護等級、四種繼承行為修飾詞、外部索引器:與方法無差別。
  • 不可為靜態:符合物件引用語義。
  • 覆寫時應用 base[E] 存取父類別索引器。

資料型別與參數列表

  • 索引器資料型別同時為 get 回傳型別與 set 中 value 型別。
  • 至少一個參數,位於 this 後中括號內。
  • 參數只能傳值型別,不可 ref/out。
  • 參數資料型別可為任意 C# 型別。依參數簽名進行多型辨析。
  • 中括號內所有參數在 get/set 均可引用,value 僅限 set。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved