這篇內容繼續接著昨天的lambda表示式的原始碼繼續下去。昨天講了lambda表示式,此篇講擴充套件方法,這兩點都是linq帶來的新特性。
一.擴充套件方法介紹
廢話不多說,先上原始碼截圖:
上圖中getmemorycount就是乙個擴充套件方法,從上圖的標註可以得出以下幾點資訊:
2.擴充套件方法和被包含的類必須是靜態的
3.被包含的類不能是泛型類
深入總結:
1.擴充套件方法可以接收任意多個引數,不過第乙個引數必須用this修飾。
2.擴充套件方法的基礎是物件, 比如這個物件突然想額外加乙個方法,那可以用擴充套件方法,第乙個引數就是以這個物件為基礎的引數。(擴充套件方法的基石是物件)
二.擴充套件方法的智慧型感知
當你擴充套件方法**編寫完成,並且沒有問題的時候。你呼叫此物件的擴充套件方法時,ide會有智慧型感知,見下圖箭頭處:
在上圖中,也可以看到擴充套件方法的圖示也不一樣,是帶有藍色下墜標示。
三.擴充套件方法的鏈式語句
在上圖可以看到,擴充套件方法帶來的好處是可以進行語句的鏈式操作。
四.擴充套件方法和正常方法的衝突
先上原始碼:
從上圖可以看到,在物件中沒有找到對應的方法,就會去執行擴充套件方法(object是所有的基類)。執行結果:
源**:linq學習系列-----1.3擴充套件方法(原始碼.rar
學習Linq之擴充套件方法
什麼是擴充套件方法 擴充套件方法允許開發人員往乙個現有的clr型別的公開契約 contract 中新增新的方法,而不用生成子類或者重新編譯原來的型別。擴充套件方法有助於把今天動態語言中流行的 對duck typing的支援之靈活性,與強型別語言之效能和編譯時驗證融合起來。擴充套件方法是可以通過使用例...
LinQ 擴充套件方法
本節主要講解擴充套件方法,涉及 linq 的具體知識不多。net framework 為程式設計人員提供了很多的類,很多的方法,但是,不論 net framework 在類中為我們提供了多麼多的方法,有時候仍然不能滿足我們的需求,例如 你想讓字串物件具有topascal方法,含義就是將字串轉化為 p...
LinQ 擴充套件方法
本節主要解說擴充套件方法,涉及 linq 的詳細知識不多。net framework 為程式設計人員提供了非常多的類,非常多的方法,可是,不論 net framework 在類中為我們提供了多麼多的方法,有時候仍然不能滿足我們的需求,比如 你想讓字串物件具有topascal方法,含義就是將字串轉化為...