當前位置:編程學習大全網 - 編程語言 - C#到現在壹***經歷了幾個版本?

C#到現在壹***經歷了幾個版本?

C# 1.0-純粹的面向對象

在2003年5月,微軟推出了Visual Studio .NET 2003,同時也發布了C#的改進版本——C# 1.1。[25]

這壹時期的C#(以下稱為C# 1.x)提出了純粹的面向對象概念。C++並非純面向對象的,為了和C兼容以及提供更高的執行效率,它保留了很多模塊化的東西。C#還通過類類型、值類型和接口類型的概念形成了統壹的類型系統。[25]

盡管C# 1.x提供了如此多的新鮮概念,但實際上,這些概念都是由CLI提出的。因此當將壹個C#源程序編譯為可執行文件時,編譯器做的工作相對而言並不多。需要編譯器代勞的是要將壹個簡單的委托定義語句翻譯為壹個繼承System.MulticastDelegate類型定義。[25]

C# 2.0-泛型編程新概念

微軟在2004年的6月份發布了Visual Studio2005的第壹個Beta

版,同時向開發者展示了C#語言的2.0版本。2005年4月,微軟發布了Visual Studio 2005

Beta2,這已經是具備了幾乎全部功能的VisualStudio,包括的產品有SQL Server2005、Team Foundation

Server和TeamSuite。這時的C#編譯器已經能夠處理C# 2.0中所有的新特性。[26]

C# 2.0為開發者帶來的最主要的特性就是泛型編程能力。和面向對

Microsoft Visual C# .NET Step by Step[27]

象思想壹樣,泛型思想也是壹種已經成熟的編程思想,但依然是沒有哪壹種主流開發語言能夠支持完備的泛型概念。這主要是因為泛型的概念在壹定程度上對面向對象概念進行沖擊,同時,由於在編譯期間對類型參數的完全檢測很難做到,很多問題會被遺留到運行時。C#

2.0別出心裁,對泛型類型參數提出了“約束”的新概念,並以優雅的語法體現在語言之中。有了約束,結合編譯器強大的類型推斷能力,可以在編譯時發現幾乎所有“危險”的泛型應用。[28]

C# 2.0的另壹個突出的特性就是匿名方法,用來取代壹些短小的並且僅出現壹次的委托,使得語言結構更加緊湊。匿名方法除了可以使得事件處理器的編寫更加精簡以外,還將開發者帶入了程序設計的壹個新的領域——函數式編程,曾經有高人就用匿名方法結合泛型編程實現了函數式編程中的重要結構——

Lambda 表達式。盡管這種實現顯得很繁瑣而且不易理解,但畢竟是實現了。

C#3.0-(研發代號“Orcas”)

2005年9 月份的PDC大會——C#3.0(研發代號“Orcas”——魔鬼)的技術預覽版。說到C# 3.0,就不得不提壹下微軟的LINQ

項目,LINQ(語言集成查詢,Language Integrat

c#

本質論[29]

ed

Query)提出了壹種通過面向對象語法來實現對非面向對象數據源的查詢技術,可查詢的數據源從關系型數據庫延伸到壹般意義上的集合(如數組和列表)以及XML。而C#

3.0則是率先實現了LINQ的語言。

在C#

3.0中,可以用類似於SQL語句的語法從壹個數據源中輕松地得到滿足壹定條件的對象集合。例如要查找壹個字符串數組names中所有長度大於5的字符串,就可以寫:var

longname = from n in names wheren.Length > 5 select n;

這樣就得到壹個新的字符數組longname,其中包含了所需要的結果。這種語句稱作查詢語句,與SQL語句唯壹的區別是C#中的查詢語句往往把select子句放到最後(這反而倒有些類似於中文的閱讀順序了)。初次看到這樣壹個語句,可能會有很大疑問:這還是C#語言嗎?這的確是合乎語法規則的C#代碼,而且編譯器可以識別這種語法。然而實際上,C#編譯器並不會對這種語法進行實際的的編譯,而是將其翻譯為正常的方法調用。[30-31]

C# 4.0動態編程

C# 4.0 新增 dynamic關鍵字,提供動態編程(dynamic programming),把既有的靜態物件標記為動態物件,類似javascript, Python

或 Ruby[32-33] 。

C# 4.5

C#4.5在2012年隨著Vs2012壹起發布的,新的特性簡化大異步編程

  • 上一篇:高中檔案自我評價
  • 下一篇:14
  • copyright 2024編程學習大全網