介紹C# 泛型類在使用中約束
首先看一下泛型的基本語法
訪問修飾符 返回類型 泛型方法名 <T>(T 參數(shù))
1):無法在泛型方法內(nèi)部給任何 T 類型創(chuàng)建實例的對象,因為在泛型方法內(nèi)部不知道傳進來的對象有哪些構(gòu)造函數(shù)
2):約束是對內(nèi)部的?。▽τ诜盒头椒ǎ┘s束也是會被繼承的!
3):給泛型類 加類型(引用類型,值類型)的約束:where T:class,new ( )
遇到的問題:
在寫MongodbHelper類的時候,為了能處理多種類別,所以如下定義了該類:
public class MongodbHelper<T>
{
。。。。。
}
在該類的實現(xiàn)中有如下操作:
mongo.Connect();
var db = mongo.GetDatabase(_databaseName);
var collection = db.GetCollection<T>(_collectionName);
collection.Insert(t, true);
mongo.Disconnect();
這個是對mongo做插入操作的方法,這個時候,db.GetCollection<T>(_collectionName) 這里的T導(dǎo)致編譯無法通過,因此查出上面的定義是有誤的,GetCollection的簽名如下:
IMongoCollection<T> GetCollection<T>(string name) where T : class;
它對T有特殊的自己的約束,因此
在定義的時候也要加上對應(yīng)的約束,來保證T的約束一致。
相關(guān)文章
DevExpress之ChartControl實現(xiàn)餅狀圖百分比演示實例
這篇文章主要介紹了DevExpress之ChartControl實現(xiàn)餅狀圖百分比演示的方法,實例講述了窗體與圖形繪制函數(shù)的用法,需要的朋友可以參考下2014-10-10詳解C#如何使用重載方法實現(xiàn)不同類型數(shù)據(jù)的計算
這篇文章主要為大家詳細介紹了C#如何使用重載方法實現(xiàn)不同類型數(shù)據(jù)的計算,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02Unity3D UI Text得分?jǐn)?shù)字增加的實例代碼
這篇文章主要介紹了Unity3D UI Text得分?jǐn)?shù)字增加方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04C#中隱藏TabControl選項卡標(biāo)簽的解決方案
這篇文章主要介紹了C#中隱藏TabControl選項卡標(biāo)簽的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04C# readnodefile()不能讀取帶有文件名為漢字的osg文件解決方法
這篇文章主要介紹了C# readnodefile()不能讀取帶有文件名為漢字的osg文件解決方法,需要的朋友可以參考下2015-09-09C#影院售票系統(tǒng)畢業(yè)設(shè)計(3)
這篇文章介紹了C#影院售票系統(tǒng)畢業(yè)設(shè)計,文章主要內(nèi)容是關(guān)于購票、座位顏色狀態(tài)的改變及場次座位狀態(tài)的顯示,需要的朋友可以參考下2015-11-11