読者です 読者をやめる 読者になる 読者になる

FROM ME TO YOU

oh my bizarre life !!

型パラメータを持つクラスを実装してみる

ジェネリッククラスやディクショナリークラスの型パラメータは独自に実装したクラスにも適用できる。

今回の例だと普通にジェネリック使えばよさそうだけど、インデクサ(setやget)が実装できるので、この辺りに処理が挟めむケースとかなら便利かもしれない。

    class Program
    {
        public class ListTest<T>
        {
            T[] list = new T[100];
            int add;

            public void AddItem(T item)
            {
                list[add++] = item;
            }

            public T this[int Index]
            {
                get
                {
                    return list[Index];
                }
                set
                {
                    list[Index] = value;
                }
            }
        }

        static void Main(string[] args)
        {
            // string型の配列を作成
            ListTest<string> list = new ListTest<string>();

            list.AddItem("hogehoge");
            list.AddItem("fugafuga");

            Console.WriteLine(list[0]);
            Console.WriteLine(list[1]);

            // DataTime型の配列を作成
            ListTest<DateTime> list2 = new ListTest<DateTime>();
            list2.AddItem(DateTime.Today);

            Console.WriteLine(list2[0]);

            // 普通にジェネリッククラスで作ってみる
            List<DateTime> list3 = new List<DateTime>();
            list3.Add(DateTime.Today);

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

出力

hogehoge
fugafuga
2015/08/30 0:00:00
2015/08/30 0:00:00