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

imported>Administrator
imported>Administrator
編集の要約なし
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++における添字参照演算子([]演算子)のオーバーロードの例 ===
[[C Sharp|C#]]のインデクサーに似ていると言われる[[C++]]における添字参照演算子([]演算子)のオーバーロードの例。
10年ぶりくらいにC++を書いた気がする。
10年ぶりくらいにC++を書いた気がする。
もしかすると間違っているかもしれない。
もしかすると間違っているかもしれない。