C#中泛型约束(where)

转载自:C#中泛型约束(where)是什么?

   
 T约定:只能是Access类型或者Access的子类型
    public class BaseAccess<T> where T : Access
    {
    }
 
 
    T约定:T只能传入接口的本身和实现了此接口的类
    public class BaseAccess<T> where T : IAggregateRoot
    {
    }
 
   引用类型约束演示
    public class BaseAccess<T> where T : class
    {
    }
 
   值类型约束演示
    public class BaseAccess<T> where T : struct
    {
    }
 
    构造器约束
    public class BaseAccess<T> where T : new()
    {
         MongoContextAdapter _context;
        public BaseAccess(MongoContextAdapter context)
        {
            this._context = context;
        }
    }
 
    一个类型占位符有两个约束   必须是引用类型,必须提供构造函数
    public class BaseAccess<T> where T : class,new()
    {
 
 
    }
 
    K必须约定是一个引用类型
    V必须约定是一个值类型
    public class BaseAccess<K, V>
        where K : class,new()
        where V : struct
    {
 
 
    }
 
 
    /// 泛型参数K必须继承V         K,V必须是引用类型,必须提供构造函数
    public class BaseAccess<K, V>
        where K : V
        where K : class,new()
        where V : class,new()
    {
    }
 
 
 
    T约定:只能是Access类型或者Access的子类型
    public class BaseAccess<T> where T : Access
    {
    }
 
 
    T约定:T只能传入接口的本身和实现了此接口的类
    public class BaseAccess<T> where T : IAggregateRoot
    {
    }
 
   引用类型约束演示
    public class BaseAccess<T> where T : class
    {
    }
 
   值类型约束演示
    public class BaseAccess<T> where T : struct
    {
    }
 
    构造器约束
    public class BaseAccess<T> where T : new()
    {
         MongoContextAdapter _context;
        public BaseAccess(MongoContextAdapter context)
        {
            this._context = context;
        }
    }
 
    一个类型占位符有两个约束   必须是引用类型,必须提供构造函数
    public class BaseAccess<T> where T : class,new()
    {
 
 
    }
 
    K必须约定是一个引用类型
    V必须约定是一个值类型
    public class BaseAccess<K, V>
        where K : class,new()
        where V : struct
    {
 
 
    }
 
 
    /// 泛型参数K必须继承V         K,V必须是引用类型,必须提供构造函数
    public class BaseAccess<K, V>
        where K : V
        where K : class,new()
        where V : class,new()
    {
    }
 

 


 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章