複製鏈接
請複製以下鏈接發送給好友

索引器

鎖定
索引器為c#程序語言中類的一種成員,它使得對象可以像數組一樣被索引,使程序看起來更直觀,更容易編寫。
中文名
索引器
外文名
indexer
應用領域
計算機科學

目錄

索引器定義

它可以使得像數組那樣對對象使用下標。它提供了通過索引方式方便地訪問類的數據信息的方法。
要聲明類或結構上的索引器,請使用this關鍵字,例如:
public int this[int index] //聲明索引器
{
// get and set 訪問
}
索引器的修飾符有:new、publicprotected、internal、private、virtual、sealedoverrideabstractextern。當索引器聲明包含extern修飾符時,稱該索引器為外部索引器。因為外部索引器聲明不提供任何實際的實現,所以它的每個訪問器聲明都由一個分號組成。
索引器的簽名由其形參的數量和類型組成。它不包括索引器類型或形參名。如果在同一類中聲明一個以上的索引器,則它們必須具有不同的簽名。
索引器值不歸類為變量;因此,不能將索引器值作為ref或out參數來傳遞。
索引必須是實例成員。

索引器使用方法

在本示例中,定義了一個泛型類,併為其提供了簡單的get和set訪問器方法(作為分配和檢索值的方法)。Program 類為存儲字符串創建了此類的一個實例。代碼如下:
class SampleCollection<T>
{
private T[] arr = new T[100];
public T this[int i]
{
get { return arr[i]; }
set { arr[i] = value; }
}
}
下面是如何使用上述代碼實現的索引器,具體代碼示例如下:
class Program
{
static void Main(string[] args)
{
SampleCollection <string> s = new SampleCollection<string>();
s[0] = "索引器的使用";
System.Console.WriteLine(s[0]);
}
}
C#並不將索引類型限制為整數。例如,對索引器使用字符串可能是有用的。通過搜索集合內的字符串並返回相應的值,可以實現此類的索引器。如下所示:
using System;
using System.Collections;
class IndexClass
{
private Hashtable ht = new Hashtable();
public object this[object key]
{
get { return ht[key]; }
set { ht[key] = value; }
}
}
由於訪問器可被重載,字符串和整數版本可以共存。以上代碼中的關鍵字value用來定義設置索引器分配的值,關鍵字this用於定義的索引器。