說明
整理C#發展歷史,了解各個階段新增功能,熟悉技術迭代歷程。
C#和FrameWork版本對應關系
C# 1.0 .NET Framework 1.0 2002-02-13
委托、事件
C# 1.1 .NET Framework 1.1 2003-04-24
APM(異步編程模型)
C# 2.0 .NET Framework 2.0 2005-11-07 VisualStudio 2005
C# 3.0 .NET Framework 3.0 2007-11-06
.NET Framework 3.5 2007-11-19 VisualStudio 2008
- 自動實現的屬性
get;set; - 匿名類型
new { Amount = 108, Message = "Hello" }; - 查詢表達式
查詢表達式 from a in b.. - Lambda 表達式
Lambda表達式=> - 表達式樹
linq - 擴展方法
- 隱式類型本地變量
var - 分部方法
分部類和方法 partial class, partial method - 對象和集合初始值設定項
Cat cat = new Cat { Age = 10, Name = "Fluffy" };
C# 4.0 .NET Framework 4.0 2010-04-12 VisualStudio 2010
C# 5.0 .NET Framework 4.5 2012-08-15 VisualStudio 2012
- 異步成員
異步和等待(async和await) task - 調用方信息特性
(Caller Information) 可以獲取有關方法調用方的信息。可以獲取源代碼的文件路徑、源代碼中的行號和調用方的成員名稱。
C# 6.0 .NET Framework 4.6 2015-07-20 VisualStudio 2015
- C# 6 中的新增功能
- 靜態導入
舊代碼 Math.PI * Math.Pow(Radius, 2);
類中導入using static System.Math;后可簡化為
PI \* Pow(Radius, 2);
- Expression bodied 成員
=>運算符 - 自動屬性初始化表達式
public string FirstName { get; set; } = string.Empty; - 異常篩選器
異常及When篩選器 上下關鍵字
catch (HttpRequestException e) when (e.Message.Contains("301")) switch (obj) { case Shape shape when shape.Area == 0
- Null 傳播器
A?.B?[C];
末尾運算符
int[] xs = new[] { 0, 10, 20, 30, 40 }; int last = xs[\^1]; **\$**
- 字符串內插
Console.WriteLine(\$"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.");
- nameof 運算符
C# 7.0 .NET Framework 4.6.2 2016-08-02 VisualStudio 2017
C# 7.0 中的新增功能
- Out 變量
現在可以在方法調用的參數列表中聲明 out 變量,而不是編寫單獨的聲明語句:
int.TryParse(input, out int result) 不用聲明result - 元組和析構函數
- 模式匹配
- 本地函數
- 已擴展 expression bodied 成員
- Ref 局部變量和返回結果
- 棄元
- 二進制文本和數字分隔符
- 引發表達式
C# 7.1 .NET Framework 4.7 2017-04-05 VisualStudio 2017 15.3
- async Main 方法
應用程序的入口點可以含有 async 修飾符。 - default 文本表達式
在可以推斷目標類型的情況下,可在默認值表達式中使用默認文本表達式。 - 推斷元組元素名稱
在許多情況下,可通過元組初始化來推斷元組元素的名稱。 - 泛型類型參數的模式匹配
可以對類型為泛型類型參數的變量使用模式匹配表達式。
C# 7.2 .NET Framework 4.7.1 2017-10-17 VisualStudio 2017 15.5
- 編寫安全高效代碼的技巧
結合了多項語法改進,可使用引用語義處理值類型。 - 非尾隨命名參數
命名的參數可后接位置參數。 - 數值文字中的前導下划線
數值文字現可在任何打印數字前放置前導下划線。 - private protected 訪問修飾符
private protected 訪問修飾符允許訪問同一程序集中的派生類。 - 條件 ref 表達式 現在可以引用條件表達式 (?😃 的結果。
C# 7.3 .NET Framework 4.7.2 2018-04-30 VisualStudio 2017 15.7
C# 8.0 .NET Framework 4.8 2019-04-18
C# 8.0 版是專門面向 .NET C# Core 的第一個主要 C# 版本。 一些功能依賴於新的 CLR 功能,而其他功能依賴於僅在 .NET Core 中添加的庫類型。 C# 8.0 向 C# 語言添加了以下功能和增強功能:
C# 8.0 中的新增功能
C# 9.0 .NET 5 2020-09-04
C# 9.0 中的新增功能
.NET Core
.NET Core 1.0 2016-06-27
.NET Core 2.0 2016-08-14 .NET Core 2.0 的新增功能
.NET Core 2.1 2018-05-30 .NET Core 2.1 的新增功能
.NET Core 2.2 2018-12-04 .NET Core 2.2 的新增功能
.NET Core 3.0 2019-09-23 .NET Core 3.0 的新增功能
.NET Core 3.1 2019-12-03 .NET Core 3.1 的新增功能
.NET 5 2020-10-13 What's new in .NET 5
官方版本歷史:
https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-version-history