泛型约束

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.同一泛型参数可以有多个约束

原文地址:https://www.cnblogs.com/space1996/p/13721356.html