インデクサ

インデクサーの概要

  • インデクサーを使用すると、配列と同じようにオブジェクトにインデックスを作成することができます。
  • get アクセサーは値を返します。 set アクセサーは値を割り当てます。
  • this キーワードは、インデクサーの定義に使用されます。
  • value キーワードは、set インデクサーによって割り当てられる値の定義に使用されます。
  • インデクサーは、整数値でインデックスを指定する必要はありません。個々の検索メカニズムの定義方法によります。
  • インデクサーはオーバーロードすることができます。
  • インデクサーには、2 次元配列にアクセスする場合など、複数の仮パラメーターを指定できます。

サンプル

サンプル1

サンプルコード

using System;
using System.Collections.Generic;

namespace IndexTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Player player = new Player();

            Console.WriteLine(player[0]);
        }
    }

    class Player
    {
        List<string> name = new List<string> { "ファースト", "セカンド" };

        public string this[int number]
        {
            get
            {
                return name[number];
            }
            set
            {
                name[number] = value;
            }
        }
    }
}

サンプルの実行結果

ファースト

サンプル2(ジェネリック)

サンプルコード

using System;

namespace IndexTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Player<int> playerInt = new Player<int>();

            // Playerクラスで宣言されているname配列に数値を代入
            playerInt[0] = 10;
            Console.WriteLine(playerInt[0]);

            Player<string> playerString = new Player<string>();

            // Playerクラスで宣言されているname配列に文字列を代入
            playerString[0] = "ファースト";
            Console.WriteLine(playerString[0]);

        }
    }

    // ジェネリックを使って、型を選べるようにする。
    class Player<T>
    {
        T[] array = new T[2];

        public T this[int number]
        {
            get
            {
                return array[number];
            }
            set
            {
                array[number] = value;
            }
        }
    }
}

サンプルの実行結果

10
ファースト

C#

Posted by hidepon