隨著 Visual Studio 2005 的發布,C# 語言已更新為 2.0 版,它支援下列新功能:
泛型
該語言中添加了一些泛型型別,使得程式員能夠實現程度很高的代碼重用,獲得更高的集合類效能。泛型型別只存在 arity 上的不同。也可以將參數強製為特定的類型。
迭代器
迭代器使得規定 foreach 迴圈將如何逐一查看集合的內容變得更加容易。
部分類別
部份型別定義允許將單個類型(比如某個類)拆分為多個檔案。Visual Studio 設計器使用此功能將它產生的程式碼與使用者代碼分離。
可空類型
可空類型允許變數包含未定義的值。在使用資料庫和其他可能包含未含有具體值的元素的資料結構時,可以使用可空類型。
匿名方法
現在,可以將代碼塊作為參數來傳遞。在本應使用委託的任何地方,都可以使用代碼塊來取代:不需要定義新的方法。
命名空間別名限定符
命名空間別名限定符 (::) 對訪問命名空間成員提供了更多控制。global :: 別名允許訪問可能被代碼中的實體隱藏的根命名空間。
靜態類
若要聲明那些包含不能執行個體化的靜態方法的類,靜態類就是一種安全而便利的方式。C# 1.2 版要求將類建構函式定義為私人的,以防止類被執行個體化。
外部程式集別名
通過 extern 關鍵字的這種擴充用法引用包含在同一程式集中的同一組件的不同版本。
屬性訪問器可訪問性
現在可以為屬性的 get 和 set 訪問器定義不同層級的可訪問性。
委託中的協變和逆變
現在傳遞給委託的方法在傳回型別和參數方面可以具有更大的靈活性。
如何:聲明、執行個體化和使用委託
方法群組轉換為聲明委託提供了一種更簡單的文法。
固定大小的緩衝區
在不安全的代碼塊中,現在可以聲明包含嵌入數組的固定大小結構。
friend 組件
程式集可以提供對其他程式集的非公用類型的訪問。
內嵌警告控制項
#pragma 警告指令可用于禁用和啟用某些編譯器警告。
volatile
現在可以將 volatile 關鍵字應用於 IntPtr 和 UIntPtr。
轉載:C# 泛型簡介
泛型問題陳述
什麼是泛型
應用泛型
一般約束
泛型和強制類型轉換
繼承和泛型
一般方法
一般委託
泛型和反射
泛型和 .NET Framework
小結
轉載:C#中的泛型
泛型(generic)是C#語言2.0和通用語言運行時(CLR)的一個新特性。泛型為.NET架構引入了型別參數(type parameters)的概念。型別參數使得設計類和方法時,不必確定一個或多個具體參數,其的具體參數可延遲到客戶代碼中聲明、實現。這意味著使用泛型的型別參數T,寫一個類MyList,客戶代碼可以這樣調用:MyList, MyList或 MyList。這避免了運行時類型轉換或裝箱操作的代價和風險。
目錄
C#中的泛型. 1
一、泛型概述. 2
二、泛型的優點. 5
三、泛型型別參數. 7
四、型別參數的約束. 8
五、泛型類. 11
六、泛型介面. 13
七、泛型方法. 19
八、泛型委派. 21
九、泛型代碼中的default關鍵字. 23
十、C++模板和C#泛型的區別. 24
十一、運行時中的泛型. 25
十二、基礎類庫中的泛型. 27
轉載:匿名方法
摘要:3.1 匿名方法運算式
3.2 匿名方法簽名
3.3 匿名方法轉換
3.3.1 委託建立運算式
3.4 匿名方法塊
3.5 外部變數
3.5.1 捕獲外部變數
3.5.2 局部變數的執行個體化
3.6 匿名方法求值
3.7 委託執行個體相等性
3.8 明確賦值
3.9 方法群組轉換
3.10 實現執行個體
轉載:迭代器
摘要:4.1 迭代器塊
4.1.1 列舉程式介面
4.1.2 可枚舉介面
4.1.3 產生的類型
4.1.4 this訪問
4.2 Enumerator對象
4.2.1 MoveNext()方法
4.2.2 Current屬性
4.2.3 Dispose()方法
4.3 Enumerable對象
4.3.1 GetEnumerator()方法
4.4 yield語句
4.4.1 有限賦值
4.5 執行個體
轉載:不完全類型