1、泛型(Generic)是c#2.0和通用语言运行时CLR的一个新特性。泛型为.NET的框架引入类型参数(TYPE parameter ),这使得我们在设计类和方法时,不用确定一个或多个具体的参数,其具体的参数可以延迟到客户的代码中去声明和实现。这避免了运行时类型的转换或装箱拆箱操作的性能损耗。
2、泛型的声明:在方法名后面加上<>就是一个泛型方法。
下面附加一段极其简单的代码,说明一下泛型方法的声明以及调用。
我们在调用泛型方法的时候,需要再调用时在<>里面指明是什么类型。
当然,这种方法在我们方法内部是不安全的,因为我们不知道会传入什么类型,所以,我们可以使用一些约束。
例如:
加了约束之后,我们在调用时,就只能按照约束传参了。这样就提高了安全性。
3、下面图片中可以看一下关于泛型类或者泛型接口的声明
4、关于泛型的协变与逆变
协变与逆变只能是在泛型接口或者泛型委托中。
我们先声明两个类,分别是Bird, Sparrow:Bird
在分别定义两个泛型接口分别用in 和out修饰参数接口并实现了他们
接下来就可以看一下关于协变与逆变的代码编写了
如图以及图中代码备注所示: