class MyClass<T1,T2,T3> where T2:Custom where T3:IComparable
如上:泛型类有三个类型参数,T1是未绑定的,只有Custom类型或从Custom类型继承的类型的类才能使用T2的实参,而对于T3,只有实现IComparable接口的类才能用于类型实参。
共有5中约束类型:
- 类名:只有这个类型的类或从它继承的类才能用作实例参数。
- class:任何引用类型,包括类、数组、委托和接口都可以用作实参。
- struct:任何值类型都可以被用作类型实参。
- Interface:只有这个接口或者实现这个接口的类型才可以被用作类型实参。
- new():任何带有无参公共构造函数的类型都可以用作实参。这叫做构造函数约束。
- 以上5种约束,最多只能有一个主约束(类名、class、struct只能存在一个),如果有则必须放在第一位。
- 可以存在任意多的接口约束。
- 如果存在构造函数约束,则必须放在最后。