索引器是一種特殊的類成員,它能夠讓物件以類似陣列的方式來訪問,使程式看起來更為直觀,更容易編寫。
1、索引器的定義
c#中的類成員可以是任意型別,包括陣列和集合。當乙個類包含了陣列和集合成員時,索引器將大大簡化對陣列或集合成員的訪問操作。
定義索引器的方式與定義屬性有些類似,其一般形式如下:
[修飾符]資料型別 this[索引型別 index]
set
}
修飾符包括public,protected,private,internal,new,virtual,sealed,override, abstract,extern.
資料型別是表示將要訪問的陣列或集合元素的型別。
索引器型別表示該索引器使用哪一型別的索引來訪問陣列或集合元素,可以是整數,可以是字串;this表示操作本物件的陣列或集合成員,可以簡單把它理解成索引器的名字,因此索引器不能具有使用者定義的名稱。 例如:
class z
else
}set
}}
2、索引器的使用
通過索引器可以訪問類的例項的陣列成員,操作方法和陣列相似,一般形式如下:
物件名[索引]
其中索引的資料型別必須與索引器的索引型別相同。例如:
z z=new z();
z[0]=100;
z[1]=101;
console.writeline(z[0]);
表示先建立乙個物件z,再通過索引來引用該物件中的陣列元素。
3、介面中的索引器
在介面中也可以宣告索引器,介面索引器與類索引器的區別有兩個:一是介面索引器不使用修飾符;二是介面索引器只包含訪問器get或set,沒有實現語句。訪問器的用途是指示索引器是可讀寫、唯讀還是只寫的,如果是可讀寫的,訪問器get或set均不能省略;如果唯讀的,省略set訪問器;如果是只寫的,省略get訪問器。
例如:public inte***ce iaddress
string address
string answer();
}
表示所宣告的介面iaddress包含3個成員:乙個索引器、乙個屬性和乙個方法,其中,索引器是可讀寫的。
4、索引器與屬性的比較
索引器與屬性都是類的成員,語法上非常相似。索引器一般用在自定義的集合類中,通過使用索引器來操作集合物件就如同使用陣列一樣簡單;而屬性可用於任何自定義類,它增強了類的字段成員的靈活性。
屬 性 索 引 器
允許呼叫方法,如同公共資料成員
允許呼叫物件上的方法,如同物件是乙個陣列
可通過簡單的名稱進行訪問
可通過索引器進行訪問
可以為靜態成員或例項成員
必須為例項成員
其get訪問器沒有引數
其get訪問器具有與索引器相同的形參表
其set訪問器包含隱式value引數
除了value引數外,其set訪問器還具有與索引器相同的形參表
C 索引符 索引器
索引符或叫索引器,是將類或結構的例項轉為數租,按陣列的方式設定和獲取元素值 索引符可以看做運算子的過載。索引符常用於表示某些資料結構的類 陣列 列表和對映等,並可以在.net基類中定義這些結構體。也可用於引用型別的轉換。索引符和陣列比較 1 索引符的索引值 index 型別不受限制 2 索引符允許過...
C 索引器 索引器的定義
索引器定義類似於屬性,但其功能與屬性並不相同。索引器提供一種特殊的方法編寫get和set訪問器。屬性可以像訪問字段一樣訪問物件的資料,索引器可以使使用者像訪問陣列一樣訪問類成員。定義索引器的語法如下 訪問修飾符 型別名稱 this 型別名稱 引數名 set索引器沒有像屬性和方法那樣的名字,關鍵字th...
C 索引器 索引器的定義
索引器定義類似於屬性,但其功能與屬性並不相同。索引器提供一種特殊的方法編寫get和set訪問器。屬性可以像訪問字段一樣訪問物件的資料,索引器可以使使用者像訪問陣列一樣訪問類成員。定義索引器的語法如下 訪問修飾符 型別名稱 this 型別名稱 引數名 set索引器沒有像屬性和方法那樣的名字,關鍵字th...