標籤:是什麼 client each server 沒有 wait 初始化 2.0 lex
最近,粗略的讀了《深入理解C#(第三版)》這本技術書,書中介紹了C#不同版本之間的不同以及新的功能。
現在將部分摘錄的內容貼在下面,以備查閱。
C#語言特性:
1.C#2.0
C#2的主要特性是泛型、可空類型、匿名方法及其他有關委託的增強和迭代模組。此外還包含一些小特性:部分型別、靜態類、包含不同存取修飾詞的屬性的取值方法和賦值方法、命名空間別稱、pragma指令以及固定大小的緩衝器。
2.C#3.0
C#3為LINQ而生,儘管很多特性在其他地方也很有用。自動屬性、數組和局部變數的隱式類型、對象和集合的初始化程式以及匿名型別,Lambda運算式和運算式書延伸了2.0中對委託所做的進展,擴充方法構成了查詢運算式的最後一塊拼圖。分部方法僅出現在C#3中。
3.C#4.0
C#4中的特性旨在提高互通性,但它不像C#3.0那樣一門心思為了LINQ。同樣,對一些小特性(命名實參、選擇性參數、更好的COM互動、泛型可變性)和動態類型這個大特性進行了相當清晰的劃分。
4.C#5.0
C#5.0的非同步特性和兩個小特性(foreach變數捕獲的變化和調用者資訊特性)。儘管非同步特性只引入了一個新的運算式,即async函數中的await,但卻在很大程度上改變了執行模型。儘管C#團隊做好了發布其他大型語言特性的準備,我還是認為暫緩發布是個明智之舉。重點在於C#社區要謹慎面對async/await,而這需要時間。
架構庫的特性
1..NET2.0
2.0庫所支援的CLR和語言最重要的特性是泛型和可空類型。儘管可空類型不需要進行過多的修改,但某些從.NET2.0以來一直存在的泛型集合及其反射API卻需要相應地更新。
很多部分只進行了很小的修改,如支援壓縮、在SQL Server單個連結上的多活動結果集,記憶很多靜態I/O輔助方法,如File.ReadAllText。公平地說,這些都不如對使用者介面架構的改變重要。
ASP.NET新增了主版頁面、先行編譯功能記憶很多新的控制項。Windows Forms增加了TableLayoutPanel及類似的類,從而在布局能力上有了一個飛躍;通過雙緩衝、新的資料繫結模型,ClickOnce部署等,進一步增強了效能。.NET2.0引入的BackgroundWorker可以在多線程應用程式中輕鬆安全地更新UI,嚴格意義上它並不是Windows Forms的一部分,但在.NET3.0的WPF到來之前,Windows Forms一直都是它主要的應用情境。
2..NET3.0
.NET3.0有點奇特,因為它是一個在CLR、語言和已有庫方面都沒有改變的“主”版本,而是由4個新的庫組成。
- WPF是下一代使用者介面架構;它是一場革命,而不僅僅是對Windows Forms的革新,儘管這兩者可以共同存在。它跟Windows Forms是兩種完全不同的模型,在本質上更傾向於組裝式。Silverlight的使用者介面基於WPF。
- WCF(Windows Communication Foundation)是構建面向服務的應用程式架構;它不會局限於單個協議,而是可以進行擴充,並且致力於統一現有的RPC類的通訊管道,如遠端。
- WF(Windows Workflow Foundation)是用於構建工作流程應用程式的系統。
- Windows CardSpace是一個安全識別系統。
這四個領域中,WPF和WCF已得到蓬勃發展,而WF和CardSpace似乎還未得到很好的推廣。這並不是說後兩種技術沒有用,或以後不會變的很重要。
3..NET3.5
.NET3.5中最大的新特性是C#3.0和VB9所支援的LINQ。它包括LINQ to Objects、LINQ to SQL、LINQ to XML以及提供底層支援的運算式樹狀架構。
其他方面也有一些重要的特性:在ASP.NET中可以更加簡便地使用AJAX;WCF和WPF都在很大程度上得到了改進;引入了一個外掛程式架構(system.AddIN);新增了各種密碼編譯演算法,等等。對於那些對開發和事件相關的API感興趣的開發人員,我有必要向你介紹ReaderWriterLockSlim和急需的TimeZoneInfo、DateTimeOffset類型。如果你使用.NET3.5或更高的版本卻仍舊到處依賴DateTime,你應該意識到除此之外還存在著更好的選擇。
.NET3.5 SP1中最值得注意的庫特性是Entity Framework及相關的ADO.NET技術同時其他技術也得到了微小的改進。同樣重要的是,.NET3.5 SP1還引入了Client Profile—案頭.NET架構的縮減版,不包含很多用於伺服器端開發的類庫。這樣就可以對只有用戶端的應用程式進行小規模的部署。
4..NET4.0
長期以來,.NET4.0庫以各種不同的形式添加了不少內容。DLR是一個重要的部分,此外我們還在其他章節介紹了並行擴充。和前幾版一樣,使用者介面也有了很大的改進,單位富用戶端所做的改進主要集中在WPF,而不是Windows Forms。現有的核心API還進行了很多微調,以增加易用性,如String.Join現在接受IEnumerable<T>,而不再堅持只用字串數組。這並不是什麼重大改進,但如果它們能讓每一位開發人員輕鬆那麼一點點,累積起來效果也是顯著的。我們已經看到了現有的泛型介面和委託是如何具備協變性和逆變性的(如IEnumerable<T>變為IEnumerable<out>,Action<T>變為Action<in T>),不過還有一些新的類型值得探索。
System.Numeric是為數值計算新增的命名空間。它只包含BigInteger和Complex類型,未來可能還會添加BigDecimal。System命名空間也新增了一些類型,如用於延遲初始化值得Lazy<T>,以及與Pair<T1,T2>類功能相同的Tuple泛型類家族,它最多達8個型別參數。Tuple還支援結構化比較,由System.Collections命名空間中的IStructuralEquatable和IStructuralComparable介面表示。儘管第12章中介紹的全部Reactive Extensions
類都不屬於.NET4,但其核心介面IObserver<T>和IObservable<T>則位於System命名空間。我之所以把這些具體項提出來,是因為儘管像託管可擴充架構(Managed Extensibility Framework,MEF)之類的新領域已經得到了廣泛的關注,單還是容易忽視這些簡單的類型。
深入理解C#第三版部分內容