.NET 3.5擴(kuò)展方法的優(yōu)點(diǎn)與限制有哪些,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)沁縣免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
.NET 3.5擴(kuò)展方法:新增的語言特性
原本,我聽說 Partial Class 的時候,以為可以為已存在的類添加方法了,不過,Partial Class 只能在同一個 Assembly 之中的要求,使得它并不能實現(xiàn)這一點(diǎn)。.Net 3.5 增加了很多語言特性,擴(kuò)展方法是其中一個。用擴(kuò)展方法,我們就可以為已經(jīng)存在的類添加方法。
public static class ExtendTest { public static Print(this object o) { Console.WriteLine(o); } }
之后,就可以對于任意的 object 使用這個方法:
string s = "hello"; s.Print(); "X".Print(); MyClass x = new MyClass(); x.Print();
.NET 3.5擴(kuò)展方法的創(chuàng)建
對于擴(kuò)展方法的創(chuàng)建,基本上,只有兩點(diǎn)記住就可以了:必須是靜態(tài)方法,***個參數(shù)增加 this 關(guān)鍵字。
用 Reflector 查看了一下,和我的猜測基本一致,其實它的實現(xiàn)是使用的自定義屬性,所以擴(kuò)展方法基本上可以看成是編譯器特性:
public static class ExtendTest { [ Extend ] public static Print(object o) { Console.WriteLine(o); } }
擴(kuò)展方法很好用,使用上確實可以和動態(tài)語言像 Python、Ruby 之類的相比了。不過,畢竟 C# 是靜態(tài)語言,擴(kuò)展方法還是有一些限制的。
.NET 3.5擴(kuò)展方法的限制
一個限制是:不能使用原有類的私有或保護(hù)成員。這個問題,怎么說呢,大部分情況下沒有問題,不過如果真的想使用私有或保護(hù)成員的時候,會很頭疼。如果要給 .Net framework 中的類添加方法,這個問題也許并不是太大吧,畢竟一般我們也只知道它們的公有成員。如果要給自己的 DLL 添加一個新的 DLL,也做到原有 DLL 用于 .Net 2.0,新 DLL 擴(kuò)展原 DLL 的話,比較會遇到。我在 DbEntry.Net 中對于這個問題的解決方案是,使用友元程序集。這種方法還是需要修改原 DLL,添加新 DLL 為友元程序集,另外,將需要訪問的成員標(biāo)注為 internal 才行。
另一個限制:不能給一個類添加靜態(tài)方法。不知道是不是我沒有找到,反正感覺,本來就是靜態(tài)方法了,怎么才能再標(biāo)注為實現(xiàn)靜態(tài)方法呢?難道用 static static ?當(dāng)然,使用的場景應(yīng)該也不多吧。
再一個限制:不能給一個類添加接口。這個么,本來就不是擴(kuò)展方法的設(shè)計目標(biāo),而且,實現(xiàn)上似乎也會麻煩很多,所以本來不該抱怨,不過,如果能實現(xiàn)的話,確實會有很多地方會很方便。比如,如果能給 DbObjectModel 添加 IQueryable 接口,就可以只通過增加一個 using 而實現(xiàn)所有的 Linq 功能,而有這個限制的時候,只能再實現(xiàn)一個 LinqDbObjectModel 之類的了……
關(guān)于.NET 3.5擴(kuò)展方法的優(yōu)點(diǎn)與限制有哪些問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
分享題目:.NET3.5擴(kuò)展方法的優(yōu)點(diǎn)與限制有哪些
轉(zhuǎn)載來源:http://www.chinadenli.net/article2/goghoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、品牌網(wǎng)站建設(shè)、軟件開發(fā)、企業(yè)網(wǎng)站制作、App設(shè)計、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)