啥叫泛型?具体怎么用?

英文是Generic,意思是通用的,你知道美国通用GM么?G就是这个。

意思是说,使用泛型的话,那么这个类或者方法就可以通用化,在什么地方通用化,就是即时不同类型都可以通用。说起来有点儿抽象啊。

泛型表现的最频繁的地方就是集合类库了,因为集合这种数据结构是非常非常常用的。
.NET1.1使用集合的话,如ArrayList,你可以往集合中存放任何东西,因为他的Add方法接受的参数是object,众所周知他是所有类型的父类。但是要获取的话,比如用索引器[]返回的也是object,那么如果我们要使用的话必须强制转换成所需的类型,比如string。这个坏处是我们可以向集合中放入任何对象,而取出来的时候我们都要判断一下是否是所需要类型的对象以免使用的时候出现异常。
泛型就解决了这个问题,在.NET2.0里面使用List<T>替换ArrayList,其中T是一个类型参数,什么是类型参数,就是说你可以使用一个类型来当作这个类初始化的变量,而初始化一个实例以后,所有集合内部的T类型会被你的类型参数替换,来个例子:
List<T>有下面两个成员
void Add(T object){ ... }; 一个方法,他接受一个T类型的对象
T this[int index] { get { ... } }一个所引起,他返回一个T类型的对象

你可以看到方法中使用了类型参数作为自己的声明,那么如果你使用new List<string>();声明一个List对象,那么你调用Add方法的时候会发现他的签名是Add(string object);这样你只能把string作为参数传入了,保证了安全,而索引器会变成string this[int index];这样,查询的对象返回的也是string,而不是object,这样你就不需要担心List中放入不是string的对象了。


以上只是泛型应用的一个最简单的例子,通过配合反射,配合Linq,你会发现泛型的威力是无法想象的。
原文地址:https://www.cnblogs.com/jobs2/p/2677817.html