C#で文字列を引数とするインデクサのサンプルコード

インデクサの仕組みについて学びましょう

インデクサとは

C#のインデクサとは、クラスや構造体などのオブジェクトに、配列のようなインデックスを使用してアクセスするためのプロパティです。通常のプロパティが単一の値を扱うのに対して、インデクサは複数の値を格納するコレクションにアクセスするために使用されます。インデクサは、配列の要素にアクセスするために使用される添字演算子[]を使用して定義されます。インデクサの定義方法は、プロパティと同じですが、getアクセサとsetアクセサに引数を追加する必要があります。以下は、インデクサの定義例です。

public int this[int index]
{
    get { return myArray[index]; }
    set { myArray[index] = value; }
}

このインデクサは、int型の引数を取り、myArrayの該当する要素にアクセスするために使用されます。使用例は以下のようになります。

MyClass myObject = new MyClass();
myObject[0] = 100;
int value = myObject[0];

文字列を引数とするインデクサのサンプルコード

MyIndexer myIndexer = new MyIndexer();

myIndexer["one"] = "1";
myIndexer["two"] = "2";
myIndexer["three"] = "3";
myIndexer["four"] = "4";
myIndexer["five"] = "5";

Console.WriteLine(myIndexer["one"]);
Console.WriteLine(myIndexer["two"]);
Console.WriteLine(myIndexer["three"]);
Console.WriteLine(myIndexer["four"]);
Console.WriteLine(myIndexer["five"]);

class MyIndexer
{
    private string[] myArray = new string[5];

    public string this[string index]
    {
        get
        {
            switch (index)
            {
                case "one":
                    return myArray[0];
                case "two":
                    return myArray[1];
                case "three":
                    return myArray[2];
                case "four":
                    return myArray[3];
                case "five":
                    return myArray[4];
                default:
                    return "";
            }
        }
        set
        {
            switch (index)
            {
                case "one":
                    myArray[0] = value;
                    break;
                case "two":
                    myArray[1] = value;
                    break;
                case "three":
                    myArray[2] = value;
                    break;
                case "four":
                    myArray[3] = value;
                    break;
                case "five":
                    myArray[4] = value;
                    break;
            }
        }
    }
}

このコードでは、MyIndexerクラスに文字列をインデックスとするプロパティを定義しています。getアクセサでは、引数で渡された文字列に応じて、myArrayの該当する要素を返します。setアクセサでは、引数で渡された文字列に応じて、myArrayの該当する要素に値を設定します。Mainメソッドでは、MyIndexerクラスのインスタンスを作成し、インデックスを通じて配列の要素にアクセスしています。

C#,インデクサ

Posted by hidepon