C#和FrameWork版本对应关系
说明
整理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