「C Sharp/インデクサー」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
 
(他の1人の利用者による、間の2版が非表示)
1行目: 1行目:
'''インデクサー'''(英:indexer)とは、[[C Sharp|C#]]に搭載されているユーザー定義型を[[配列]]のように扱えるようにする機構のことである。
+
[[C Sharp|C#]]における'''インデクサー'''(英:indexer)とは、ユーザー定義型をまるで[[配列]]のように扱えるようにする機構のことである。
  
[[C++]]における添字参照演算子([]演算子)のオーバーロードと似たようなもので、さらに取得(get)と設定(set)のそれぞれに別々のメソッドを割り当てれるようになったものと思って間違いない。
+
インデクサーは[[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++における添字参照演算子([]演算子)のオーバーロードの例 ===
10年ぶりくらいにC++を書いた気がする。
+
[[C Sharp|C#]]のインデクサーに似ていると言われる[[C++]]における[[添字参照演算子]]([]演算子)の[[オーバーロード]]の例。
もしかすると間違っているかもしれない。
+
10年ぶりくらいに[[C++]]を書いた気がする。
 +
もしかするとこの[[ソースコード]]は間違っているかもしれない。
 
<source lang="cpp">
 
<source lang="cpp">
 
#include <iostream>
 
#include <iostream>
54行目: 62行目:
  
 
== 参考文献 ==
 
== 参考文献 ==
<references/>
+
{{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;
}

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]