インデクサ

出典: フリー百科事典『ウィキペディア(Wikipedia)』
2008年3月3日 (月) 23:57時点におけるWdpp (トーク)による版 (VB.NET, C++/CLIについて簡単に追加)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

インデクサ (indexer) は、クラス構造体インスタンス配列と同様の添え字を指定してアクセスできるプログラミング言語C#の機能である。

インデクサはC++の添え字演算子の多重定義と似ているが次のような点で発展したものだと見ることもできる。ただしC++とC#の言語設計上の事情も絡んでいるので、単純に比較できるものではない。

  • インデクサではプロパティのように値を得るときと代入するときとで実際には別のメソッドに分かれている。
  • インデクサは単独で多次元な配列を模倣できる。C++で同じようなことをするには間に一時的にオブジェクトを入れるなどの技巧を凝らす必要がある。

他の言語ではC#のインデクサに似た機能として、Visual Basic .NETの引数付きプロパティやC++/CLIのインデックス付きプロパティなどが存在する。

リストを表すコレクションの要素のアクセスでは、インデクサを用いない言語では例えば次のようなインターフェイスメソッドによって定義される。

1) index番目の要素の取り出し

Object get(int index);
例:Object o = list.get(3);

2) index番目の要素に Object o をセット

void set(int index, Object o);
例:list.set(2, o);

C# のインデクサではリストの要素へのアクセスを配列のアクセスと同じように記述することができる。

Object o = list[3];
list[2] = o;

この際インデックスとして整数以外の値(文字列やオブジェクトなど)も使用することができ、ハッシュテーブルなどの連想配列を表すコレクションに使用されている。

Object o = map["key"];テンプレート:Asbox