介紹C# 泛型類在使用中約束
首先看一下泛型的基本語(yǔ)法
訪問修飾符 返回類型 泛型方法名 <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 ( )
遇到的問題:
在寫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ú)法通過,因此查出上面的定義是有誤的,GetCollection的簽名如下:
IMongoCollection<T> GetCollection<T>(string name) where T : class;
它對(duì)T有特殊的自己的約束,因此
在定義的時(shí)候也要加上對(duì)應(yīng)的約束,來(lái)保證T的約束一致。
相關(guān)文章
C#切換鼠標(biāo)左右鍵習(xí)慣無(wú)需控制面板中修改
本人一直喜歡左手使用鼠標(biāo),偶爾同事會(huì)臨時(shí)操作一下,因?yàn)樗牧?xí)慣是右手,還得在控制面板里進(jìn)行更改,太麻煩了所以就編寫一個(gè)控制臺(tái)程序,雙擊一下即可切換左右鍵,熱愛懶人的你可不要錯(cuò)過了哈2013-02-02
C#通過正則表達(dá)式實(shí)現(xiàn)提取網(wǎng)頁(yè)中的圖片
本文給大家分享的是使用C#通過正則表達(dá)式來(lái)實(shí)現(xiàn)提取網(wǎng)頁(yè)中的圖片的代碼,十分的方便,有需要的小伙伴可以參考下。2015-12-12
淺談C#跨線程調(diào)用窗體控件(比如TextBox)引發(fā)的線程安全問題
下面小編就為大家分享一篇淺談C#跨線程調(diào)用窗體控件(比如TextBox)引發(fā)的線程安全問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助2017-11-11
c#項(xiàng)目實(shí)現(xiàn)發(fā)布到服務(wù)器全過程
這篇文章主要介紹了c#項(xiàng)目實(shí)現(xiàn)發(fā)布到服務(wù)器全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
C#實(shí)現(xiàn)在啟動(dòng)目錄創(chuàng)建快捷方式的方法
這篇文章主要介紹了C#實(shí)現(xiàn)在啟動(dòng)目錄創(chuàng)建快捷方式的方法,涉及C#快捷方式的創(chuàng)建技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09

