介紹C# 泛型類在使用中約束
首先看一下泛型的基本語(yǔ)法
訪問(wèn)修飾符 返回類型 泛型方法名 <T>(T 參數(shù))
1):無(wú)法在泛型方法內(nèi)部給任何 T 類型創(chuàng)建實(shí)例的對(duì)象,因?yàn)樵诜盒头椒▋?nèi)部不知道傳進(jìn)來(lái)的對(duì)象有哪些構(gòu)造函數(shù)
2):約束是對(duì)內(nèi)部的?。▽?duì)于泛型方法)約束也是會(huì)被繼承的!
3):給泛型類 加類型(引用類型,值類型)的約束:where T:class,new ( )
遇到的問(wèn)題:
在寫(xiě)MongodbHelper類的時(shí)候,為了能處理多種類別,所以如下定義了該類:
public class MongodbHelper<T>
{
。。。。。
}
在該類的實(shí)現(xiàn)中有如下操作:
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)文章
C# SqlHelper應(yīng)用開(kāi)發(fā)學(xué)習(xí)
這篇文章主要和大家一起學(xué)習(xí)C# SqlHelper應(yīng)用開(kāi)發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
C# 實(shí)現(xiàn)截圖軟件功能實(shí)例代碼
這篇文章主要介紹了C# 實(shí)現(xiàn)截圖軟件功能實(shí)例代碼,需要的朋友可以參考下2017-06-06
C#數(shù)據(jù)結(jié)構(gòu)與算法揭秘二 線性結(jié)構(gòu)
本文中,我們討論了什么是線性結(jié)構(gòu),線性結(jié)構(gòu)有哪些特點(diǎn),并且詳細(xì)介紹了一個(gè)最簡(jiǎn)單線性結(jié)構(gòu)順序表,并且通過(guò)源代碼對(duì)她進(jìn)行一些列的分析,最后還舉了兩個(gè)例子,讓我們更好的理解順序表2012-11-11
C#實(shí)現(xiàn)讀取Word表格到DataSet
在應(yīng)用項(xiàng)目里,多數(shù)情況下我們會(huì)遇到導(dǎo)入 Excel 文件數(shù)據(jù)到數(shù)據(jù)庫(kù)的功能需求,但某些情況下,也存在使用 Word 進(jìn)行表格數(shù)據(jù)編輯的情況,這其中也包括導(dǎo)入Word內(nèi)容的功能,比如表格數(shù)據(jù)導(dǎo)出到DataSet數(shù)據(jù)集,本文將給大家介紹了C#讀取Word表格到DataSet2023-12-12
關(guān)于C#數(shù)強(qiáng)轉(zhuǎn)會(huì)不會(huì)拋出異常詳解
這篇文章主要給大家介紹了關(guān)于C#數(shù)強(qiáng)轉(zhuǎn)會(huì)不會(huì)拋出異常的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04

