1. 程式人生 > >C#中的索引器

C#中的索引器

索引器是 C# 的簡單元件;為陣列建立索引器後,可以通過從類物件指定索引來直接訪問陣列元素;可以用索引陣列的方式索引物件;可以像訪問陣列一樣訪問類的成員

定義索引器的規則
        必須指定至少一個索引器引數
        應當為索引器引數賦值

【索引器】
索引器允許類或結構的例項就像陣列一樣進行索引。索引器類似於屬性,不同之處在於它們的訪問器採用引數。
索引器在語法上方便您建立客戶端應用程式可將其作為陣列訪問的類、結構或介面。索引器經常是在主要用於封裝內部集合或陣列的型別中實現的。

  • 使用索引器可以用類似於陣列的方式為物件建立索引。
  • get 訪問器返回值。set 訪問器分配值。
  • this 關鍵字用於定義索引器。
  • value 關鍵字用於定義由 set 索引器分配的值。
  • 索引器不必根據整數值進行索引,由您決定如何定義特定的查詢機制。
  • 索引器可被過載。
  • 索引器可以有多個形參,例如當訪問二維陣列時。
 


注意:

  • 索引器型別及其引數型別必須至少如同索引器本身一樣是可訪問的。
  • 索引器的簽名由其形參的數量和型別組成。它不包括索引器型別或形參名。如果在同一類中宣告一個以上的索引器,則它們必須具有不同的簽名。
  • 索引器值不屬於變數;因此,不能將索引器值作為 ref 或 out 引數進行傳遞。
定義索引器的步驟:
  • 指定確定索引器可訪問性的訪問修飾符。
  • 索引器(由get訪問器返回)的返回型別。
  • this關鍵字(this在這裡作為索引器的名稱,而且必須用this)。
  • 左括號後面是索引器的資料型別和識別符號,接著是右方括號。
  • 左大括號表示索引器主體的開始,在此出定義get和set訪問器,這與定義屬性一樣,最後插入右大括號。

【屬性和索引器之間的比較】

索引器與屬性類似。除下表中顯示的差別外,為屬性訪問器定義的所有規則同樣適用於索引器訪問器。

屬性 索引器
允許像呼叫公共資料成員一樣呼叫方法。 允許對一個物件本身使用陣列表示法來訪問該物件內部集合中的元素。
可通過簡單的名稱進行訪問。 可通過索引器進行訪問。
可以為靜態成員或例項成員。 必須為例項成員。
屬性的 get 訪問器沒有引數。 索引器的 get 訪問器具有與索引器相同的形參表。
屬性的 set 訪問器包含隱式 value 引數。 除了值引數外,索引器的 set 訪問器還具有與索引器相同的形參表。
支援對自動實現的屬性使用短語法。 不支援短語法。

【索引器與陣列的比較】

  • 索引器不指向記憶體位置
  • 索引器可以有非整數的下標(索引)
  • 可以過載索引器


【索引器與陣列的比較】
  索引器可以有非整數下標而陣列不能有

【索引器與陣列的比較】
 

【在索引器中使用多個引數】