【C#】ジェネリック(Generics) ~<T>型 / サンプルプログラム編 ~

  ■ 例1

  Program.cs

using System;

namespace GenericDemo1
{
    class uArrayList<DATA>
    {
        DATA[] value;
        int dataNum = 0;

        public uArrayList(int max)
        {
            value = new DATA[max];
        }

        public void add(DATA val)
        {
            try
            {
                if (dataNum < value.Length)
                {
                    value[dataNum] = val;
                    dataNum++;
                }
                else
                {
                    throw new IndexOutOfRangeException("Index value exceeded");
                }
            } catch (Exception e) {
                Console.WriteLine("Error : " + e);
            }

        }

        public void display()
        {
            int i = 1;
            foreach (DATA val in value)
            {
                Console.WriteLine(i + " : " + val);
                i++;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            uArrayList<int> obj1 = new uArrayList<int>(2);
            obj1.add(100);
            obj1.add(150);
            obj1.display();
            uArrayList<string> obj2 = new uArrayList<string>(2);
            obj2.add("India");
            obj2.add("U.S.A");
            obj2.display();
            Console.Read();
        }
    }
}

 

  ■ 例2

  Program.cs

using System;

namespace GenericDemo2
{
    class General<T, U>
    {
        T[] itemOne;
        U[] itemTwo;
        int counter = 0;
        
        public General(int max)
        {
            itemOne = new T[max];
            itemTwo = new U[max];
        }

        public void add(T value1, U value2)
        {
            try
            {
                if (counter < itemOne.Length)
                {
                    itemOne[counter] = value1;
                    itemTwo[counter] = value2;
                    counter++;
                }
                else
                {
                    throw new IndexOutOfRangeException("Index value exceeded");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error : " + e);
            }
        }

        public void disp()
        {
            foreach (T value in itemOne)
            {
                Console.WriteLine("id : " + value);
            }
            foreach (U value in itemTwo)
            {
                Console.WriteLine("Name : " + value);
            }
        }
    }

    class Employee
    {
        static void Main(string[] args)
        {
            General<int, string> obj = new General<int, string>(4);
            obj.add(1, "Ryuken");
            obj.add(2, "Kenshiro");
            obj.add(3, "Raou");
            obj.add(4, "Toki");
            obj.disp();
            Console.Read();
        }
    }
}

 

  関連記事

  【C#ジェネリクスGenerics) ~<T>型 / 入門編 ~

http://blogs.yahoo.co.jp/dk521123/22167448.html