泛型特性提供了一种更优雅的方式,可以让多个类型共享一组代码。泛型允许我们声明类型参数化的代码,可以用不同的类型进行实例化。也就是说,我们可以用“类型占位符”来写代码,然后再创建类的实例时知名真实的类型。
c#提供了5种泛型:类、结构、接口、委托、方法。
类型参数的约束
约束使用where子句列出。
- 每一个有约束的类型参数有自己的where子句。
- 如果形参有多个约束,它们再where子句种使用逗号分隔。
chass MyClass <T1,T2,T3> where T2:Customer where T3:IComparable {}
泛型方法
public void PrintData<S,T> (S p,T t) where S:Person {}