您的位置: 大智教程网 > 软件开发教程 > C# > 正文
一个简单的例子学习c#泛型
2009-07-27 11:14  来源: 大智教程网

using System;
//我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为方法的参数类型不同。有没有一种办法,在方法中传入通用的数据类型,这样不就可以合并代码了吗?泛型的出现就是专门解决这个问题的。
namespace Generic
{
    class Program
    {
        static void Main(string[] args)
        {
            //一个普通的类,只能传入int类型的参数。
            print p = new print(5);
            //使用了泛型,只需要在 < > 中定义参数类型就可以了。
            print1<int> p1 = new print1<int>(5);
            print1<string> p2 = new print1<string>("p2");
            //泛型参数的约束,第一个必须是值类型(struct),第二个是引用类型(class)。
            print2<int, string> p3 = new print2<int, string>(5, "p3");
            //泛型方法,可以对方法传入不同类型的参数。
            print3 p4 = new print3();
            p4.print("aaa", "bbb", "ccc");
            p4.print(111,222,333);

            Console.ReadLine();
            //输出结果
            //5
            //5
            //p2
            //5 p3
            //aaa
            //bbb
            //ccc
            //111
            //222
            //333
        }
    }

    class print
    {
        public print(int i)
        {
            Console.WriteLine(i);
        }
    }

    class print1<T>
    {
        public print1(T t)
        {
            Console.WriteLine(t);
        }
    }
    //泛型约束,使用了where关键字。
    class print2<T, V> where T:struct where V:class
    {
        public print2(T t,V v)
        {
            Console.WriteLine(t + " " + v);
        }
    }

    class print3
    {
        public print3(){}
        public void print<T>(params T[] p)
        {
            foreach (T t in p)
            {
                Console.WriteLine(t);
            }
        }
    }
}

[注:]本站部分文章来源网络,如有侵害您的权利请及时通知本站, 本站会即刻删除。QQ:179916975