hakeの日記

Windows環境でプログラミングの勉強をしています。

C# - クラス - インデクサ

インスタンスに要素番号をつけて配列の様にアクセスする方法。プロパティの配列版といったところ。

    public 型 this[ int i ] { set{  } get{  } }

インデックスの数は複数(多次元)でも可。
以下は内部で配列ではないものを外部には配列っぽく見せているサンプル(あまり意味はない)
 

using System;

//インデクサ

class MyClass
{
    private int a = 0;
    private int b = 0;
    private int c = 0;
    
    public int Length  {get{return 3;} }
    public int this[int i]
    {
        set
        {
            switch(i){
                case 0: this.a = value; break;
                case 1: this.b = value; break;
                case 2: this.c = value; break;
            }
        }
        get
        {
            switch(i){
                case 0: return this.a;
                case 1: return this.b;
                case 2: return this.c;
                default: return -1;
            }
        }
    }
}

class MyMain
{
    static void Main(string[] args)
    {
        MyClass m = new MyClass();
        m[0] = 10;
        m[1] = 20;
        m[2] = 30;
        int i;
        for(i = 0; i < m.Length; i++)
            Console.WriteLine(m[i]);
        Console.WriteLine(m[i]);
    }
}

 

実行結果

10
20
30
-1