泛型约束
1.指定泛型参数为值类型:struct
public class MyClass<T> where T : struct { //...... }
2.指定泛型参数类型为引用类型:class
public class MyClass<T> where T : class { //...... }
3.指定泛型参数类型含有无参,公共的构造方法:new()
public class MyClass<T> where T : new() { //...... }
4,要求泛型参数必须派生于某一基类:类名
public class BaseClass { //...... } public class MyClass<T> where T : BaseClass { //...... }
5,要求泛型参数实现指定接口:接口名
与4类似,略
6 指定泛型参数 必须派生于泛型类型U(裸类型约束)
class MyList<U> where U : SeniorAnimal { List<U> list = new List<U>(); public void ShowInfo<T>() where T : U { } }
7.同一泛型参数可以有多个约束