屬性被視為一種智慧型字段;類似地,索引器可被視為智慧型陣列,它的本質是有參屬性。屬性封裝乙個值,索引器封裝一組值。
下面是乙個例子:
假如我們要將int作為乙個由32個二進位制位構成的陣列使用,該怎麼辦?
比如說,假如bits是int,我們想把它第1位設定位true,我們希望可以這樣寫:
bits[0] = true;
但是不能位int使用方括號記號法。該記號法僅僅適合陣列或行為與陣列相似的類似。為了解決這個問題,我們可以使用索引器。
struct intbits
}}
定義索引器需要this關鍵字。在this之前指定索引器的返回值型別.
上面的intbits結構的索引器用整數作為索引型別,返回bool值.
注意:1.索引器不是方法-沒有包含引數的圓括號,但有了指定索引的方括號.(事實上還是方法,編譯器編譯的時候會自動把它轉換成在內部使用的方法,詳情可以看clr via c#).
2.所有索引器都使用this關鍵字取代方法名,每個類或結構只允許定義1個索引器,而且總是命名為this.
3.和屬性一樣, 索引器也包含get和set這兩個訪問器.
4.索引器宣告中指定的index將用呼叫索引器時指定的索引值來填充.
int temp =
0b0_01111110;
intbits bits =
newintbits
(temp)
;bool a = bits[6]
; bits[0]
=true
;
………
理解索引器的訪問器
讀取索引器時,編譯器自動將陣列風格的**轉換成對那個索引器的get訪問器的呼叫.
類似地,向索引器寫入也是一樣的。
對比索引器和陣列
1.索引器能使用非陣列下標,陣列只能使用整數下標.
2.索引器能過載,陣列不能.
3.索引器不能作為ref 或out引數使用,陣列元素能
介面中的索引器
介面可以宣告索引器
比如:
inte***ce
irawint
}
C 索引器的用法
索引器和陣列比較 1 索引器的索引值 index 型別不受限制 2 索引器允許過載 3 索引器不是乙個變數 索引器和屬性的不同點 1 屬性以名稱來標識,索引器以函式形式標識 2 索引器可以被過載,屬性不可以 3 索引器不能宣告為static,屬性可以 乙個簡單的索引器例子 usingsystem u...
c 索引器的簡單用法
abstract class bird public abstract string getname class eagle bird public override string name set public override string getname public eagle eagle ...
C 索引器 索引器的定義
索引器定義類似於屬性,但其功能與屬性並不相同。索引器提供一種特殊的方法編寫get和set訪問器。屬性可以像訪問字段一樣訪問物件的資料,索引器可以使使用者像訪問陣列一樣訪問類成員。定義索引器的語法如下 訪問修飾符 型別名稱 this 型別名稱 引數名 set索引器沒有像屬性和方法那樣的名字,關鍵字th...