泛型是通过参数化类型来实现在同一份代码上操作多种数据类型的技术。
声明一个泛型方法,方法名后边需要有一个<T>,其中字母T不是固定的,也可以使用其它字母。
T相当于就占了一个坑,又相当于代表了一个数据类型的参数占位符
使用泛型的优点:
1. 泛型增强了代码的可读性
2. 泛型有助于实现代码的重用、保护类型的安全以及提高性能。
3. 我们可以创建泛型集合类。
4. 泛型实现了类型和方法的参数化
5. 我们还可以对泛型类进行约束以访问特定数据类型的方法。
6. 关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取。
泛型的约束:where T:
struct的约束:是值类型
class的约束:是引用类型
new()的约束:有一个空的构造函数,如果包含new()约束,则必须放在最后一个
基类名的约束:类型参数必须是指定的基类或派生自指定的基类
接口名称:类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。