C 2 0銳利體驗

2022-03-15 09:56:41 字數 1362 閱讀 8902

sql server 2005和visual studio 2005在今年的11月份要release。這個版本的.net和sql都變化比較大,首先framework從1.1變為2.0,單從framework的版本號我們知道是乙個大版本號的變化,其實visual studio後沒有了.net,所以我們說有了大變化。

下面我們看看c#中有些什麼樣的變化。

1、泛型程式設計是c#2.0中最為引人注目的發展,它賦予了型別以引數式多型的能力(我們知道以前有類的多型和方法的多型,現在增加了引數的多型性),大大豐富了型別的設計,也是今後對c#程式設計師影響最大的技術。如:定義class arrarylist 應用arrarylistal = new arrarylist;

這此我們就不對泛型作講解了,msdn是最好的幫助文件。

2、匿名方法允許c#程式設計師以一種「內聯」的方式來編寫方法**,從而使得委託例項化的工作更加直觀和方便。匿名方法只是一種對程式設計師來說的簡便方法,其生成的il其實是與以前的實現方式是一樣的。但是匿名方法通常建議不要隨便使用,很容易帶來**的難維護和易出錯。通常我們認為在超過5行的**量上我們不用匿名方法,而是定義乙個委託方法來實現委託。

迭代器則使得c#程式設計師可以更加方便地編寫應用於foreach語句的列舉集合。同樣,迭代器也是一種程式設計師層面的改進,內部的實現機制沒有改變,這一切僅發生在編譯時,編譯器讓我們可以少寫一些**而已。我們可以看到增加了yield return 和解yield break關鍵字。

3、區域性型別(partial)可以把乙個大類放在幾個檔案中,或者把比較固定的放在乙個檔案中,經常變化的放在另乙個檔案中。

空屬型別放在乙個新的命名空間下system.nullable實現在值型別也要可以有null值,保持和資料型別的匹配,個人覺得這個很有必要。其實空屬型別本身也是乙個泛型的表現形式。如system.nullable不過這裡的t有乙個約束就是一定是值型別。

靜態類就沒有什麼太大意思了,沒有靜態類的時候我們通常是把類的建構函式置為private,不過現在直接用static 來修飾類就行了,方便了一些。

這幾種技術拓寬了型別的應用,明確了型別的職責,為c#程式設計師帶來諸多態別設計上的便利。

4、另外c#2.0中還有屬性訪問器的保護級別,命名空間別名限定符等其它雜項技術。

請區別屬性修飾符和屬性訪問器修飾符。

以前我們有類的別名稱,現在增加了命名空間的別名。使用命名空間別名限定符::來避免不同命名空間中型別名稱衝突的問題。

同時還增加了pragma指示符(我們用[obsolete]特性來標識乙個已方法被廢棄),conditional特性類和定長buffer的應用。

總之,這次改動是巨大的,雖然變化是大的,不過秉著向下相容的原則,1.1的**會全部相容,只是功能的增強和易用性的增強。

要想從1.1順利過渡到2.0還需要我們提前作此準備,你準備好了嗎?

C 2 0 新增功能

泛型 該語言中新增了一些泛型型別,使得程式設計師能夠實現程度很高的 重用,獲得更高的集合類效能。泛型型別只存在 arity 上的不同。也可以將引數強制為特定的型別。有關更多資訊,請參見泛型型別引數。迭代器 迭代器使得規定 foreach 迴圈將如何迴圈訪問集合的內容變得更加容易。分部類 分部型別定義...

C 2 0 匿名委託

delegate經常被人用來與 相比較,其實兩者在某種程度上由很多共同點。不過delegate有很多更加強大的地方。首先,delegate中可以註冊任意多個 在乙個delegate被呼叫的時候,已經註冊的過程將會被逐個呼叫。其次,delegate允許註冊乙個物件的方法,而不像c 中指可以使用靜態方法...

C 20模組介紹

visual studio 2019 v16.8終於支援了c 20模組,有了模組,我們就可以充分結合c 模板的強大特性與物件導向的封裝思想,寫出更易於維護的規模較大的軟體了。visual c 目前已經實現了c 20模組的幾乎所有內容,也初步加入了工程配置和智慧型提示支援,但截至發文16.8pre6版...