中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.NET 3.5擴展方法的優點與限制有哪些

發布時間:2021-11-25 09:18:06 來源:億速云 閱讀:95 作者:柒染 欄目:編程語言

.NET 3.5擴展方法的優點與限制有哪些,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

.NET 3.5擴展方法:新增的語言特性

原本,我聽說 Partial Class 的時候,以為可以為已存在的類添加方法了,不過,Partial Class 只能在同一個 Assembly 之中的要求,使得它并不能實現這一點。.Net 3.5 增加了很多語言特性,擴展方法是其中一個。用擴展方法,我們就可以為已經存在的類添加方法。

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擴展方法的創建

對于擴展方法的創建,基本上,只有兩點記住就可以了:必須是靜態方法,***個參數增加 this 關鍵字。

用 Reflector 查看了一下,和我的猜測基本一致,其實它的實現是使用的自定義屬性,所以擴展方法基本上可以看成是編譯器特性:

public static class ExtendTest      {          [ Extend ]          public static Print(object o)          {              Console.WriteLine(o);          }      }

擴展方法很好用,使用上確實可以和動態語言像 Python、Ruby 之類的相比了。不過,畢竟 C# 是靜態語言,擴展方法還是有一些限制的。

.NET 3.5擴展方法的限制

一個限制是:不能使用原有類的私有或保護成員。這個問題,怎么說呢,大部分情況下沒有問題,不過如果真的想使用私有或保護成員的時候,會很頭疼。如果要給 .Net framework 中的類添加方法,這個問題也許并不是太大吧,畢竟一般我們也只知道它們的公有成員。如果要給自己的 DLL 添加一個新的 DLL,也做到原有 DLL 用于 .Net 2.0,新 DLL 擴展原 DLL 的話,比較會遇到。我在 DbEntry.Net 中對于這個問題的解決方案是,使用友元程序集。這種方法還是需要修改原 DLL,添加新 DLL 為友元程序集,另外,將需要訪問的成員標注為 internal 才行。

另一個限制:不能給一個類添加靜態方法。不知道是不是我沒有找到,反正感覺,本來就是靜態方法了,怎么才能再標注為實現靜態方法呢?難道用 static static ?當然,使用的場景應該也不多吧。

再一個限制:不能給一個類添加接口。這個么,本來就不是擴展方法的設計目標,而且,實現上似乎也會麻煩很多,所以本來不該抱怨,不過,如果能實現的話,確實會有很多地方會很方便。比如,如果能給 DbObjectModel 添加 IQueryable 接口,就可以只通過增加一個 using 而實現所有的 Linq 功能,而有這個限制的時候,只能再實現一個 LinqDbObjectModel 之類的了……

關于.NET 3.5擴展方法的優點與限制有哪些問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

社会| 长沙市| 新河县| 娄底市| 皋兰县| 思茅市| 石柱| 威信县| 姚安县| 海南省| 巴东县| 鹤壁市| 泰和县| 叶城县| 临澧县| 灯塔市| 兴仁县| 桦南县| 嘉峪关市| 邳州市| 封开县| 浪卡子县| 崇明县| 兴化市| 吴川市| 德保县| 天全县| 尼木县| 长白| 德钦县| 晋宁县| 科尔| 正宁县| 宜宾市| 西昌市| 响水县| 福海县| 许昌县| 阳曲县| 华宁县| 石台县|