Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            MyGenericArray <int> ma = new MyGenericArray <int>(5);

            for (int i = 0; i < 5; i++)
            {
                ma.SetItem(i, i + 1);
            }

            // 多重泛型
            MyGenericArray <int, string> ma2 = new MyGenericArray <int, string>();

            // 多重带限制的泛型
            MyGenericArray2 <int, string> ma3 = new MyGenericArray2 <int, string>();

            // 多重带限制的泛型
            //MyGenericArray2<string, string> m3 = new MyGenericArray2<string, string>();

            // 泛型的继承
            SonMyGenericArray <int> sma = new SonMyGenericArray <int>(3);

            // 泛型的继承也可以指定类型
            SonMyGenericArray sma2 = new SonMyGenericArray(3);

            // 泛型在方法上的实现
            // 泛型类 和 泛型方法的数据类型可以不一致
            ma.SetItem <char>(5, 'c');
            ma.SetItem <string>(5, "c");

            // 非泛型类的泛型方法
            int  a = 10; int b = 20;
            char c = 'i'; char d = 'u';

            Console.WriteLine("a:{0} b:{1}", a, b);
            Console.WriteLine("c:{0} d:{1}", c, d);
            Swap <int>(ref a, ref b);
            Swap <char>(ref c, ref d);
            Console.WriteLine("a:{0} b:{1}", a, b);
            Console.WriteLine("c:{0} d:{1}", c, d);

            // 泛型在委托中的应用
            NumberChanger <int> n1 = new NumberChanger <int>(AddNum);
            NumberChanger <int> n2 = new NumberChanger <int>(MultNum);

            n1(25);
            n2(5);

            Console.ReadLine();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            //泛型在Class上的实现
            MyGenericArray <int, string> intArray = new MyGenericArray <int, string>(5);

            for (int index = 0; index < 5; index++)
            {
                intArray.SetItem(index, index * 5);
            }
            for (int index = 0; index < 5; index++)
            {
                Console.Write(intArray.GetItem(index) + " ");
            }
            Console.WriteLine();

            MyGenericArray <char, string> charArray = new MyGenericArray <char, string>(5);

            for (int index = 0; index < 5; index++)
            {
                charArray.SetItem(index, (char)(index + 97));
            }
            for (int index = 0; index < 5; index++)
            {
                Console.Write(charArray.GetItem(index) + " ");
            }
            Console.WriteLine();

            Console.WriteLine("------------------------");//泛型在方法上的实现
            ParentGeneric <int, string> gm = new ParentGeneric <int, string>();

            gm.GenericMethod <string>("Hello Generic Method");
            gm.GenericMethod <int>(100);

            string s1 = "hello";
            string s2 = "zilong";

            Swap <string>(ref s1, ref s2);
            Console.WriteLine("item1 = {0}, item2 = {1}", s1, s2);

            int i1 = 100;
            int i2 = 99;

            Swap <int>(ref i1, ref i2);
            Console.WriteLine("item1 = {0}, item2 = {1}", i1, i2);

            Console.ReadLine();
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            MyGenericArray <int> intArray = new MyGenericArray <int>(5);

            for (int c = 0; c < 5; c++)
            {
                intArray.SetItem(c, c * 5);
            }
            for (int c = 0; c < 5; c++)
            {
                Console.Write(intArray.GetItem(c) + " ");
            }
            Console.WriteLine();

            intArray.GenericMethod <string>("Hello Generic!");
            intArray.GenericMethod <int>(100);

            MyGenericArray <char> charArray = new MyGenericArray <char>(5);

            for (int c = 0; c < 5; c++)
            {
                charArray.SetItem(c, (char)(c + 97));
            }
            for (int c = 0; c < 5; c++)
            {
                Console.Write(charArray.GetItem(c) + " ");
            }
            Console.WriteLine();

            int  m, n;
            char x, y;

            m = 10;
            n = 20;
            x = 'I';
            y = 'V';
            Console.WriteLine("m:{0};n:{1}", m, n);
            Console.WriteLine("x:{0};y:{1}", x, y);

            Swap <int>(ref m, ref n);
            Swap <char>(ref x, ref y);

            Console.WriteLine("m:{0};n:{1}", m, n);
            Console.WriteLine("x:{0};y:{1}", x, y);
        }