インデクサー
インデクサー ▲
C# では、ユーザー定義型が配列型と同様に [] を用いた要素の読み書きが行えるようにインデクサーという仕組みが用意されている
インデクサーの書き方は以下の通りである
アクセスレベル 戻り値の型 this[添字の型 添字]
{
get
{
// getアクセサ
// 添字が使える以外はプロパティと同じ
}
set
{
// setアクセサ
// こちらも添字が使える以外はプロパティと同じ
}
}
使用するイメージを具体的にするため、以下に例を記しておく(参考文献1より拝借)
using System;
/// <summary>
/// 添字の下限と上限を指定できる配列。
/// </summary>
class BoundArray
{
int[] array;
int lower; // 配列添字の下限
public BoundArray(int lower, int upper)
{
this.lower = lower;
array = new int[upper - lower + 1];
}
// ここがインデクサー
public int this[int i]
{
set { this.array[i - lower] = value; }
get { return this.array[i - lower]; }
}
}
class Program
{
static void Main()
{
BoundArray a = new BoundArray(1, 9);
for (int i = 1; i <= 9; ++i)
a[i] = i; // 自作クラスだけど配列のようにアクセスできるのはインデクサーが設定されているから
for (int i = 1; i <= 9; ++i)
Console.Write("a[{0}] = {1}\n", i, a[i]);
}
}
添字は一つである必要はなく、複数の添字を利用することができる
例えば『配列の配列』や『多次元配列』なども取り扱うことができる
また、添字の型に関しても、必ず整数型である必要はないので文字型や文字列型でもよい
- [C# によるプログラミング入門]インデクサー
参考文献 ▲
目次