索引器是一種特殊的類成員,它能夠讓物件以類似陣列的方式來訪問,使程式看起來更為直觀,更容易編寫。
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 中的索引器
索引器 1.索引器 索引器 indexer 索引器允許類或結構的例項按照與陣列相同的方式進行索引。索引器類似與屬性,不同之處在於它們的訪問器採用引數。陣列類的使用例項 using system 引用system命名空間 class arrclass public string name 定義乙個唯讀...
C 中的索引器
索引器 是c 引入的乙個新型的類成員,它允許類或結構的例項按照與陣列相同的方式進行索引。索引器型別於屬性,它們的不同之處在於索引器的訪問器採用引數。定義了索引器之後,就可以像訪問陣列一樣,使用運算子訪問類的成員。定義索引器的方式與定義屬性有些類似,其一般形式如下 修飾符 資料型別 this 資料型別...
C 中的索引器
當程式中的某個類或結構體在意義上與陣列類似,但由於自身不是陣列型別,不能使用下標進行訪問時,我們可以通過在類或結構體中定義乙個索引器,實現以下標訪問類中儲存的值。例如int型別有32位,如果我們想使用int進行位操作,就可以使用索引器。例子如下 class intbits 假設我們想將該int作為乙...