泛型:即通过参数化类型来实现在同一份代码上操作多种数据类型。
利用泛型也可以达到代码重用的目的。
1.泛型类
泛型类的定义与一般类的定义几乎一样,只是它把一些参数用泛型的类型参数来代替。
格式:
修饰符 class 类名<类型参数列表>
{
类体
}
2.泛型方法
泛型方法与普通的方法区别在于使用类型参数声明方法,泛型方法也可以被重载和重写。
例如:
public void GetMax<T>(T t,int a)
{
方法体
}
参数的类型可以是T或其他系统的数据类型。
3.约束
约束是指对泛型类型参数施加限制,用于限制可以传递到该类型参数的类型种类。
a.基类约束
指示编译器泛型类型参数必须派生自特定基类。
格式:修饰符 class 类名<类型参数列表> where 类型参数:基类名
b.接口约束
指示编译器泛型类型参数必须派生自特定接口。
格式:修饰符 class 类名<类型参数列表> where 类型参数:接口名
c.默认构造函数约束
指示编译器泛型类型参数公开了默认的公共构造函数(不带任何参数的公共构造函数)。即无参构造函数是public。
修饰符 class 类名<类型参数列表> where 类型参数 : new()
d:引用/值类型约束
指示翻译器泛型类型参数必须为引用类型或值类型。
格式:修饰符 class 类名<类型参数列表> where 类型参数:struct(或class)
其中ab都是约束了父类或父接口,传递其子类或子接口也是能满足的。