三 擴充套件方法
讓我想起了設計模式中的裝飾器(decorator)其實.net內部很多方法已經是擴充套件方法了。看圖示,普通的方法圖示下帶乙個箭號的。上圖就是linq的截圖。(我將在「c#3.0設計模式」的閱讀筆記中描述)。
擴充套件方法使您能夠向現有型別「新增」方法,而無需建立新的派生型別、重新編譯或以其他方式修改原始型別。
下面向string擴充套件了乙個方法(擴充套件方法可以寫在不同的命名空間)
namespace extensionmethods
, stringsplitoptions.removeemptyentries).length;
}
}
}擴充套件方法必須是靜態類中的靜態方法。需要擴充套件的屬性作為引數放入規則同上,加了乙個this.
呼叫。(如果不在同乙個命名空間要記得引用一下)
string s = "hello extension methods";
int i = s.wordcount();如果擴充套件方法和原類方法衝突則優先繫結原類方法
四 分部類和方法
可以將類或結構、介面或方法的定義拆分到兩個或多個原始檔中。每個原始檔包含型別或方法定義的一部分,編譯應用程式時將把所有部分組合起來。
關鍵字是 partial
其實早在 vs2003 公升級到 vs2005 大家就體驗過了。在原先的vs2003裡面窗體的**全在乙個.cs裡面。所以一些控制項的定義、設定和自己寫的**都在乙個檔案裡面。vs2005剛開始用的時候還挺不習慣的,控制項的定義都找不到了。原來放在了另乙個檔案裡 designer.cs。其實這就是分布類 partial。
分布方法應該是在c#3.0才開始支援的。
特點:分布類定義後不一定要實現,在編譯時會自動移除方法以及對方法的所有呼叫。
回顧C 3 0新特性 3
四 lambda表示式 msdn中的描述 在 2.0 之前的 c 版本中,宣告委託的唯一方法是使用命名方法。c 2.0 引入了匿名方法,而在 c 3.0 及更高版本中,lambda 表示式取代了匿名方法,作為編寫內聯 的首選方式。使用最多的地方還是在linq。表現為 符號,念 goes to.同一種...
C 3 0新特性小結 2
c 3.0中除了自動屬性外,還新增 隱含型別區域性變數 local variable type inference 匿名型別 anonymous types 物件與集合初始化器 object and collection initializers 演示例項 測試陣列 public static vo...
C 3 0 新特性概覽
自從看了scottgu的幾篇文章後就有想讓c 3.0的一些新特性在我的部落格上也留下歷史地一頁。但是由於環境不允許好久都沒有用上.net 3.0,今天終於忍不住地要動一動鍵盤滿足一下自己的慾望,因為我自己的電腦上安裝了.net 3.0 framework sdk。在這裡我總結一下前輩們的研究成果,也...