泛型

来源:互联网 发布:protobuf c windows 编辑:程序博客网 时间:2024/06/03 16:26

泛型是什么
泛型是程序设计语言的一种特性,它通过参数化类型来实现在同一份代码上操作多种数据类型。利用参数化类型将类型抽象化,从而实现灵活的复用

泛型类
当定义一个类的时候,这个类的某些字段的类型可以是不确定的,这个类就叫做泛型类,这些类型可以在类构造的时候确定。
例如:

class ClassA<T>    {        private T a;        private T b;        public ClassA(T a, T b)        {            this.a = a;            this.b = b;        }        public string GetSum()        {            return a +" "+ b;        }    }static void Main(string[] args)        {            var o1 = new ClassA<int>(12, 34);             string s = o1.GetSum();            Console.WriteLine(s);            var o2 = new ClassA<string>("www.", "baidu.com");            string s1 = o2.GetSum();            Console.WriteLine(s1);            Console.ReadKey();        }

在主函数里我们可以看到,在构造的时候我们才确定了字段的类型。

定义泛型方法跟定义泛型类是很类似的,也是定义一个参数不确定的方法,在调用方法的时候才去确定方法的参数的类型。
例如:

class Program    {        public static string GetSum<T>(T a, T b)        {            return a + "" + b;        }        static void Main(string[] args)        {            Console.WriteLine(GetSum(12,34));            Console.WriteLine(GetSum(12.21, 32.44));            Console.WriteLine(GetSum("www.", "baidu.com"));            Console.ReadKey();        }    }

这段代码实现了将任意类型的字段拼接成一个字符串,我们可以发现,这段代码实现的功能和函数的重载是一样的。
假如说我们有很多类型不一样的数据需要相加,我们如果用函数重载的方法,需要每个类型都实现一段代码。但是如果使用了泛型方法,我们只需要写一个函数就可以实现所有类型所要实现的功能了。

定义泛型类和泛型方法,不确定的类型可以有多个:

public static string GetSum<T,T2,T3>(T a, T b){}Console.WriteLine(GetSum<int,int,int>(12,34));

但是我们在使用的时候也要将所有类型全部确定下来,当不确定类型的时候可以不用写,因为编译器会自动识别参数是什么类型。

原创粉丝点击