C 索引器的用法

2021-09-28 23:01:00 字數 1165 閱讀 4514

屬性被視為一種智慧型字段;類似地,索引器可被視為智慧型陣列,它的本質是有參屬性。屬性封裝乙個值,索引器封裝一組值。

下面是乙個例子:

假如我們要將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...