インデクサ (C# プログラミング ガイド)
更新 : 2007 年 11 月
インデクサを使うと、クラスまたは構造体のインスタンスに、配列と同様にインデックスを付けることができます。インデクサはプロパティと似ていますが、インデクサのアクセサはパラメータを受け取る点が異なります。
次の例では、ジェネリック クラスが定義され、値の割り当てと取得を行う手段として単純な 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;
}
}
}
// This class shows how client code uses the indexer
class Program
{
static void Main(string[] args)
{
SampleCollection<string> stringCollection = new SampleCollection<string>();
stringCollection[0] = "Hello, World";
System.Console.WriteLine(stringCollection[0]);
}
}
インデクサの概要
インデクサを使用すると、配列と同じようにオブジェクトにインデックスを付けることができます。
get アクセサは値を返します。set アクセサは値を割り当てます。
this キーワードは、インデクサの定義に使用されます。
value キーワードは、set インデクサで割り当てられている値を定義するときに使用されます。
インデクサは、整数値でインデックスを指定する必要はありません。検索方法をどのように定義するかによって決めてください。
インデクサはオーバーロードできません。
インデクサには複数の仮パラメータを指定できます。たとえば、2 次元の配列にアクセスする場合などです。
関連項目
C# 言語仕様
詳細については、「C# 言語仕様」の次のセクションを参照してください。
1.6.7.3 インデクサ
10.2.9.3 インデクサ用に予約されているメンバ名
10.9 インデクサ
13.2.4 インターフェイスのインデクサ