「C Sharp/インデクサー」の版間の差分
< C Sharp
ナビゲーションに移動
検索に移動
imported>Administrator |
imported>Administrator |
||
1行目: | 1行目: | ||
[[C Sharp|C#]]における'''インデクサー'''(英:indexer)とは、ユーザー定義型をまるで[[配列]]のように扱えるようにする機構のことである。 | [[C Sharp|C#]]における'''インデクサー'''(英:indexer)とは、ユーザー定義型をまるで[[配列]]のように扱えるようにする機構のことである。 | ||
− | インデクサーは[[C++]]における添字参照演算子([] | + | インデクサーは[[C++]]における添字参照演算子([]演算子)のオーバーロードと似たようなものであり、さらに取得(get)と設定(set)のそれぞれに別々のメソッドを割り当てれ、かつgetとsetのそれぞれに[[アクセシビリティレベル]](publicやprivateなど。[[アクセスレベル]]と略されることが多い)も指定できるようになったものと思ってほぼ間違いない。 |
== 記述例 == | == 記述例 == |
2012年6月15日 (金) 02:54時点における版
C#におけるインデクサー(英:indexer)とは、ユーザー定義型をまるで配列のように扱えるようにする機構のことである。
インデクサーはC++における添字参照演算子([]演算子)のオーバーロードと似たようなものであり、さらに取得(get)と設定(set)のそれぞれに別々のメソッドを割り当てれ、かつgetとsetのそれぞれにアクセシビリティレベル(publicやprivateなど。アクセスレベルと略されることが多い)も指定できるようになったものと思ってほぼ間違いない。
記述例
C#におけるインデクサーの書式はプロパティーの書式に非常に似ている。
// C#によるインデクサーの記述例
class Hoge {
private String[] _data = new String[5];
public String this [int index] {
// アクセスレベルを指定しないとpublicになる。
get {
return _data[index];
}
// アクセスレベルはinternal(同一アセンブリまで公開)
internal set {
_data[index] = value;
}
}
}
//上記クラスは以下のような感じで配列のように扱えるようになる。
// var hoge = new Hoge();
// hoge[0] = "aaa";
// hoge[1] = "bbb";
参考:C++における添字参照演算子([]演算子)のオーバーロードの例
C#のインデクサーに似ていると言われるC++における添字参照演算子([]演算子)のオーバーロードの例。 10年ぶりくらいにC++を書いた気がする。 もしかすると間違っているかもしれない。
#include <iostream>
#include <string>
using namespace std;
class Hoge {
private:
string _data[5];
public:
string& operator[](int index) {
return _data[index];
}
};
int main() {
Hoge hoge;
hoge[0] = "aaa";
cout << hoge[0] << endl;
return 0;
}