前言:C#的發展已經有十多年的時間了,目前已經更新到8.0版本,本文參考官網及其他博主文章梳理了各個版本包括的常用特性,后續會不斷更新完善,如有錯誤,歡迎斧正
| C#版本、.NET、VS版本對應關系 |
| C#版本 | 發布時間 | .NET版本 | VS版本 | CLR版本 |
| 1.0 | 2002-02-13 | .NET Framework 1.0 | VS.NET 2002 | 1.0 |
| 1.1、1.2 | 2003-04-24 |
.NET Framework 1.1 | VS.NET 2003 | 1.1 |
| 2.0 | 2005-11-07 | .NET Framework 2.0 | VS2005 | 2.0 |
| 3.0 | 2006-11 | .NET Framework 3.0 | VS2008 | 2.0 |
| 3.0 | 2007-11-19 | .NET Framework 3.5 | VS2008 | 2.0 |
| 4.0 | 2010-4-12 | .NET Framework 4.0 | VS2010 | 4 |
| 5.0 | 2012-02-20 | .NET Framework 4.5 | VS2012 | 4 |
| 5.0 | 2013-10-17 | .NET Framework 4.5.1 | VS2013 | 4 |
| 5.0 | 2014-05-05 | .NET Framework 4.5.2 | VS2013 | 4 |
| 6.0 | 2015-07-26 | .NET Framework 4.6 | VS2015(v14) | 4 |
| 6.0 | 2015-11-30 | .NET Framework 4.6.1 | VS2015(v14) | 4 |
| 7.0 | 2016-08-02 | .NET Framework 4.6.2 | VS2017(v15) | 4 |
| 7.1 | 2017-04-05 | .NET Framework 4.7 | VS2017(v15.3) | 4 |
| 7.2 | 2017-10-17 | .NET Framework 4.7.1 | VS2017(v15.5) | 4 |
| 7.3 | 2018-04-30 | .NET Framework 4.7.2 | VS2017(v15.7) | 4 |
| 8.0 | 2019-04-18 | .NET Framework 4.8 | VS2019(v16) | 4 |
| 9.0 | 未發布 | .NET 5 | ||
| 10.0 | 未發布 | .NET 6 |
注:官網C#發展歷史:https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-version-history
以下是C#各版本新增的主要特性
| C#1.0 |
- 類
- 結構
- 接口
- 事件
- 屬性
- 委托
- 運算符和表達式
- 語句
- 特性
| C#2.0 |
- 泛型
- 分部類型
- 匿名方法
- 可以為null的值類型
- 迭代器
- 斜變和逆變
- getter/setter 單獨可訪問性
- 方法組轉換
- 靜態類
- 委托推斷
| C#3.0 |
- 自動實現的屬性
- 匿名類型
- 查詢表達式
- Lambda 表達式
- 表達式樹
- 擴展方法
- 隱式類型本地變量
- 分部方法
- 對象和集合初始值設定項
| C#4.0 |
- 動態綁定
- 命名參數/可選參數
- 泛型協變和逆變
- 嵌入的互操作類型
| C#5.0 |
- 異步成員
- 調用方信息特性
| C#6.0 |
- 靜態導入
- 異常篩選器
- 自動屬性初始化表達式
- Expression bodied 成員
- Null 傳播器
- 字符串內插
- nameof 運算符
- 索引初始化表達式
- Catch/Finally 塊中的 Await
- 僅限 getter 屬性的默認值
| C#7.0 |
- Out 變量
- 元組和析構函數
- 模式匹配
- 本地函數
- 已擴展 expression bodied 成員
- Ref 局部變量和返回結果
- 棄元
- 二進制文本和數字分隔符
- 引發表達式
| C#7.1 |
asyncMain方法default文本表達式- 推斷元組元素名稱
- 泛型類型參數的模式匹配
| C#7.2 |
- 編寫安全高效代碼的技巧
- 非尾隨命名參數
- 數值文字中的前導下划線
private protected訪問修飾符- 條件
ref表達式
| C#7.3 |
- 無需固定即可訪問固定的字段。
- 可以重新分配
ref本地變量。 - 可以使用
stackalloc數組上的初始值設定項。 - 可以對支持模式的任何類型使用
fixed語句。 - 可以使用更多泛型約束。
| C#8.0 |
- Readonly 成員
- 默認接口方法
- 模式匹配增強功能:
- Switch 表達式
- 屬性模式
- 元組模式
- 位置模式
- Using 聲明
- 靜態本地函數
- 可處置的 ref 結構
- 可為空引用類型
- 異步流
- 索引和范圍
- Null 合並賦值
- 非托管構造類型
- 嵌套表達式中的 Stackalloc
- 內插逐字字符串的增強功能
| C#9.0 |
- 記錄
- 僅限 Init 的資源庫
- 頂級語句
- 模式匹配增強功能
- 性能和互操作性
- 本機大小的整數
- 函數指針
- 禁止發出 localsinit 標志
- 調整和完成功能
- 目標類型的
new表達式 static匿名函數- 目標類型的條件表達式
- 協變返回類型
- 擴展
GetEnumerator支持foreach循環 - Lambda 棄元參數
- 本地函數的屬性
- 目標類型的
- 支持代碼生成器
- 模塊初始值設定項
- 分部方法的新功能
| C#10.0 |
global using指令- 文件范圍的命名空間聲明
- 擴展屬性模式
- 可使用
const內插字符串 - 記錄類型可密封
ToString() - 在同一析構中可同時進行賦值和聲明
- 可在方法上使用
AsyncMethodBuilder屬性
