索引器是 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。get/set 均可引用,value 僅限 set。