亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

介紹C# 泛型類(lèi)在使用中約束

 更新時(shí)間:2013年09月04日 15:21:54   作者:  
這篇文章介紹了C# 泛型類(lèi)在使用中約束,有需要的朋友可以參考一下

首先看一下泛型的基本語(yǔ)法

訪問(wèn)修飾符 返回類(lèi)型 泛型方法名 <T>(T 參數(shù))

1):無(wú)法在泛型方法內(nèi)部給任何 T 類(lèi)型創(chuàng)建實(shí)例的對(duì)象,因?yàn)樵诜盒头椒▋?nèi)部不知道傳進(jìn)來(lái)的對(duì)象有哪些構(gòu)造函數(shù)
2):約束是對(duì)內(nèi)部的?。▽?duì)于泛型方法)約束也是會(huì)被繼承的!

3):給泛型類(lèi) 加類(lèi)型(引用類(lèi)型,值類(lèi)型)的約束:where T:class,new ( )

遇到的問(wèn)題:
在寫(xiě)MongodbHelper類(lèi)的時(shí)候,為了能處理多種類(lèi)別,所以如下定義了該類(lèi):

復(fù)制代碼 代碼如下:

 public class MongodbHelper<T>
 {
  。。。。。
  }

在該類(lèi)的實(shí)現(xiàn)中有如下操作:
復(fù)制代碼 代碼如下:

mongo.Connect();

var db = mongo.GetDatabase(_databaseName);

var collection = db.GetCollection<T>(_collectionName);

collection.Insert(t, true);

mongo.Disconnect();



這個(gè)是對(duì)mongo做插入操作的方法,這個(gè)時(shí)候,db.GetCollection<T>(_collectionName) 這里的T導(dǎo)致編譯無(wú)法通過(guò),因此查出上面的定義是有誤的,GetCollection的簽名如下:

IMongoCollection<T> GetCollection<T>(string name) where T : class;

它對(duì)T有特殊的自己的約束,因此

在定義的時(shí)候也要加上對(duì)應(yīng)的約束,來(lái)保證T的約束一致。

相關(guān)文章

最新評(píng)論