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()
    {
    }
 

 


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