泛型约束基本上有五种:
- 值类型约束:要求泛型参数必须是值类型,例如int,short以及自定义的stuct等
public class MyClass2<T>
where T : struct//这个泛型类只接受值类型的泛型参数
{
}
- 引用类型约束:要求泛型参数必须是引用类型,例如string,object,以及自定义的class
public class MyClass<T>
where T:class//这个泛型类只接受引用类型的泛型参数
{
}
- 构造函数约束:要求泛型参数必须有构造函数
public class MyClass3<T>
where T : new()
{
}
- 接口约束:要求泛型参数必须实现某个接口
public class MyClass4<T>
where T : System.IComparable
{
}
- 基类约束:要求泛型参数必须继承某个基类
public class MyClass5<T>
where T : Customer
{
}