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

各個 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語句 - 增強的泛型約束(支持
Enum和Delegate約束)
- 索引
- 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---