「C Sharp/インデクサー」の版間の差分
< C Sharp
ナビゲーションに移動
検索に移動
imported>Administrator (ページの作成:「'''インデクサー'''(英:indexer)とは、C#に搭載されているユーザー定義型を配列のように扱えるようにする機構のこ...」) |
|||
(他の1人の利用者による、間の7版が非表示) | |||
1行目: | 1行目: | ||
− | '''インデクサー''' | + | [[C Sharp|C#]]における'''インデクサー'''(英:indexer)とは、ユーザー定義型をまるで[[配列]]のように扱えるようにする機構のことである。 |
− | [[C++]] | + | インデクサーは[[C++]]における[[添字参照演算子]]([]演算子)の[[オーバーロード]]と似たようなものであり、さらに取得(get)と設定(set)のそれぞれに別々の[[メソッド]]を割り当てれ、かつgetとsetのそれぞれに[[アクセシビリティレベル]](publicやprivateなど。[[アクセスレベル]]と略されることが多い)も指定できるようになったものと思ってほぼ間違いない。 |
− | + | == 記述例 == | |
− | + | [[C Sharp|C#]]におけるインデクサーの書式は[[プロパティー]]の書式に非常に似ている。 | |
− | |||
<source lang="csharp"> | <source lang="csharp"> | ||
+ | // C#によるインデクサーの記述例 | ||
class Hoge { | class Hoge { | ||
12行目: | 12行目: | ||
public String this [int index] { | public String this [int index] { | ||
− | get { return _data[index]; } | + | // アクセスレベルを指定しないとpublicになる。 |
− | set { _data[index] = value; } | + | get { |
+ | return _data[index]; | ||
+ | } | ||
+ | // アクセスレベルはinternal(同一アセンブリまで公開) | ||
+ | internal set { | ||
+ | _data[index] = value; | ||
+ | } | ||
} | } | ||
} | } | ||
+ | //上記クラスは以下のような感じで配列のように扱えるようになる。 | ||
// var hoge = new Hoge(); | // var hoge = new Hoge(); | ||
// hoge[0] = "aaa"; | // hoge[0] = "aaa"; | ||
22行目: | 29行目: | ||
</source> | </source> | ||
− | [[C++]] | + | === 参考:C++における添字参照演算子([]演算子)のオーバーロードの例 === |
− | + | [[C Sharp|C#]]のインデクサーに似ていると言われる[[C++]]における[[添字参照演算子]]([]演算子)の[[オーバーロード]]の例。 | |
− | + | 10年ぶりくらいに[[C++]]を書いた気がする。 | |
+ | もしかするとこの[[ソースコード]]は間違っているかもしれない。 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
#include <iostream> | #include <iostream> | ||
48行目: | 56行目: | ||
== 関連項目 == | == 関連項目 == | ||
+ | * [[スライス]] | ||
* [[プロパティー]] | * [[プロパティー]] | ||
+ | * [[アクセサー・メソッド]] | ||
* [[C Sharp|C#]] | * [[C Sharp|C#]] | ||
+ | |||
== 参考文献 == | == 参考文献 == | ||
− | + | {{reflist}} | |
− | |||
{{stub}} | {{stub}} |
2014年1月18日 (土) 15:30時点における最新版
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;
}