インデクサ
クラスや構造体のインスタンスに対し、配列のように添え字でアクセスできるようにするための文法。他のプログラミング言語でも見かけない珍しいものですが、使いどころもあまりないかも。
文字例の例
C#言語の文字列もインデクサを実装しているので、各文字をインデクサでアクセスすることが出来ます。
string name = "山田太郎";
char c = name[0]; // c は '山'
実装方法
返却する型とthisと添え字の型を指定する。インデックスは数値である必要もない。
要素型 this[int index]
{
get => 要素[index];
set => 要素[index] = value;
}
サンプル実装例
// 旧暦カレンダー
class OldCalendar
{
private string[] names = new string[] { "睦月","如月","弥生","卯月","皐月"};
public string this[int index]
{
get => names[index-1];
//set => names[index-1] = value;
}
}
// 使用する側
var calendar = new OldCalendar();
// クラスに対し添え字でアクセス "如月"が取得される
var feb = calendar[2];
ジェネリクスによる汎用的実装サンプル
class Collection<T>
{
private T[] array;
public Collection(int length)
{
array = new T[length];
}
public T this[int index]
{
get => array[index];
set => array[index] = value;
}
}