『C#』語言版本歷史

本文最后更新于 2019年 4月 20號 上午12點 52分,并同步發(fā)布于 :


圖片來自網(wǎng)絡

各個 C# 版本的主要特性、發(fā)布日期和發(fā)布方式

C# 8.0

待發(fā)布

  • Default Interface Methods: 缺省接口實現(xiàn)

  • More patterns in more places: 在更多位置中使用更多模式

    • 模式匹配增強功能:
      • Switch 表達式
      • 屬性模式
      • 元組模式
      • 位置模式
  • using declarations: using 聲明

  • Static local functions: 靜態(tài)本地函數(shù)

  • Disposable ref structs:可處置的 ref 結(jié)構(gòu)

  • Nullable reference types: 可為空引用類型

  • Asynchronous streams: 異步流

  • Indices and ranges: 索引和范圍

C# 7.3

2018 年 5 月隨 Visual Studio 2017 v15.7 發(fā)布

  • Enabling more efficient safe code : 啟用更高效的安全代碼
    • 索引 fixed 字段不需要進行固定
    • 可以重新賦值的ref局部變量
    • stackalloc 數(shù)組支持初始值設定項
    • 更多類型支持 fixed 語句
    • 增強的泛型約束(支持EnumDelegate約束)
  • Make existing features: 提升了現(xiàn)有功能
    • 元組支持==!=
    • in 方法重載解析決勝屬性
    • 擴展out 語法
  • New compiler options: 新的編譯器選項(-publicsign-pathmap)

C# 7.2

2017 年 11 月隨 Visual Studio 2017 v15.5 發(fā)布

  • Safe efficient code enhancements: 安全高效的代碼的增強功能
    • 針對實參的 in 修飾符,指定形參通過引用傳遞,但不通過調(diào)用方法修改。 將 in 修飾符添加到參數(shù)是源兼容的更改。
    • 針對方法返回的 ref readonly 修飾符,指示方法通過引用返回其值,但不允許寫入該對象。 如果向某個值賦予返回值,則添加 ref readonly 修飾符是源兼容的更改。 將 readonly 修飾符添加到現(xiàn)有的 ref 返回語句是不兼容的更改。 它要求調(diào)用方更新 ref 本地變量的聲明以包含 readonly 修飾符。
    • readonly struct 聲明,指示結(jié)構(gòu)不可變,且應作為 in 參數(shù)傳遞到其成員方法。 將 readonly 修飾符添加到現(xiàn)有的結(jié)構(gòu)聲明是二進制兼容的更改。
    • ref struct 聲明,指示結(jié)構(gòu)類型直接訪問托管的內(nèi)存,且必須始終分配有堆棧。 將 ref 修飾符添加到現(xiàn)有 struct 聲明是不兼容的更改。 ref struct 不能是類的成員,也不能用于可能在堆上分配的其他位置。
  • Non-trailing named arguments: 非尾隨命名參數(shù)
  • Leading underscores in numeric literals: 數(shù)值文字中的前導下劃線
  • private protected access modifier: private protected 訪問修飾符
  • Conditional ref expressions: 條件 ref 表達式

C# 7.1

2017 年 8 月隨 Visual Studio 2017 v15.3 發(fā)布

  • Async main:異步Main方法

  • Default expressions:default 表達式

  • Reference assemblies:引用程序集生成

  • Inferred tuple element names:推斷元組元素名稱

  • Pattern-matching with generics:

C# 7.0

2017 年 3 月隨 Visual Studio 2017 和 .NET Framework 4.7 發(fā)布

  • Out variables:out變量直接聲明,例如可以out in parameter

  • Pattern matching:模式匹配

  • Tuples:元組

  • Deconstruction:元組解析

  • Discards:沒有命名的變量,只是占位,后面代碼不需要使用其值

  • Local Functions:本地函數(shù)

  • Binary Literals:二進制字面量

  • Digit Separators:數(shù)字分隔符

  • Ref returns and locals:引用返回值和局部變量

  • Generalized async return types:async中使用泛型返回類型

  • More expression-bodied members:允許構(gòu)造器、解析器、屬性可以使用表達式作為body

  • Throw expressions:Throw可以在表達式中使用

C# 6.0

2015 年 7 月隨 Visual Studio 2015 和 .NET Framework 4.6 發(fā)布

  • Compiler-as-a-service (Roslyn)

  • Import of static type members into namespace:支持僅導入類中的靜態(tài)成員

  • Exception filters:異常過濾器

  • Await in catch/finally blocks:支持在catch/finally語句塊使用await語句

  • Auto property initializers:自動屬性初始化

  • Default values for getter-only properties:設置只讀屬性的默認值

  • Expression-bodied members:支持以表達式為主體的成員方法和只讀屬性

  • Null propagator (null-conditional operator, succinct null checking):Null條件操作符

  • String interpolation:字符串插值,產(chǎn)生特定格式字符串的新方法

  • nameof operator:nameof操作符,返回方法、屬性、變量的名稱

  • Dictionary initializer:字典初始化

C# 5.0

2012 年 8 月隨 Visual Studio 2012 和 .NET Framework 4.5 發(fā)布

  • Asynchronous methods:異步方法

  • Caller info attributes:調(diào)用方信息特性,調(diào)用時訪問調(diào)用者的信息

C# 4.0

2010 年 4 月隨 Visual Studio 2010 和 .NET Framework 4.0 發(fā)布

  • Dynamic binding:動態(tài)綁定

  • Named and optional arguments:命名參數(shù)和可選參數(shù)

  • Generic co- and contravariance:泛型的協(xié)變和逆變

  • Embedded interop types (“NoPIA”):開啟嵌入類型信息,增加引用COM組件程序的中立性

C# 3.0

2007 年 11 月隨 Visual Studio 2008 和 .NET Framework 3.5 發(fā)布

  • Implicitly typed local variables:隱式類型本地變量

  • Object and collection initializers:對象和集合初始化器

  • Auto-Implemented properties:自動屬性,自動生成屬性方法,聲明更簡潔

  • Anonymous types:匿名類型

  • Extension methods:擴展方法

  • Query expressions:查詢表達式

  • Lambda expression:Lambda表達式

  • Expression trees:表達式樹,以樹形數(shù)據(jù)結(jié)構(gòu)表示代碼,是一種新數(shù)據(jù)類型

  • Partial methods:部分方法

C# 2.0

2005 年 11 月隨 Visual Studio 2005 和 .NET Framework 3.0 發(fā)布

  • Generics:泛型

  • Partial types:分部類型,可以將類、結(jié)構(gòu)、接口等類型定義拆分到多個文件中

  • Anonymous methods:匿名方法

  • Iterators:迭代器

  • Nullable types:可以為Null的類型,該類可以是其它值或者null

  • Getter/setter separate accessibility:屬性訪問控制

  • Method group conversions (delegates):方法組轉(zhuǎn)換,可以將聲明委托代表一組方法,隱式調(diào)用

  • Co- and Contra-variance for delegates and interfaces:委托、接口的協(xié)變和逆變

  • Static classes:靜態(tài)類

  • Delegate inference:委托推斷,允許將方法名直接賦給委托變量\

C# 1.2

2003 年 4 月隨 Visual Studio 2003 和 .NET Framework 1.1 發(fā)布

  • 當 IEnumerator 實現(xiàn) IDisposable 時,foreach 循環(huán)中生成的代碼會在 IEnumerator 上調(diào)用 Dispose。

C# 1.0

2002 年 1 月隨 Visual Studio 2002 和 .NET Framework 1.0 發(fā)布

  • Classes :面向?qū)ο筇匦裕С诸愵愋?/p>

  • Structs:結(jié)構(gòu)

  • Interfaces:接口

  • Events:事件

  • Properties:屬性,類的成員,提供訪問字段的靈活方法

  • Delegates:委托,一種引用類型,表示對具有特定參數(shù)列表和返回類型的方法的引用

  • Expressions,Statements,Operators:表達式、語句、操作符

  • Attributes:特性,為程序代碼添加元數(shù)據(jù)或聲明性信息,運行時,通過反射可以訪問特性信息

  • Literals:字面值(或理解為常量值),區(qū)別常量,常量是和變量相對的


---END---

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容