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

  1. 泛型
  2. 分部类型
  3. 匿名方法
  4. 可以为 null 的值类型
  5. 迭代器
  6. 协变和逆变
    泛型List<T>、匿名方法、迭代器yield、可空类型nullable

C# 3.0 .NET Framework 3.0 2007-11-06
.NET Framework 3.5 2007-11-19 VisualStudio 2008

  1. 自动实现的属性
    get;set;
  2. 匿名类型
    new { Amount = 108, Message = "Hello" };
  3. 查询表达式
    查询表达式 from a in b..
  4. Lambda 表达式
    Lambda表达式=>
  5. 表达式树
    linq
  6. 扩展方法
  7. 隐式类型本地变量
    var
  8. 分部方法
    分部类和方法 partial class, partial method
  9. 对象和集合初始值设定项
    Cat cat = new Cat { Age = 10, Name = "Fluffy" };

C# 4.0 .NET Framework 4.0 2010-04-12 VisualStudio 2010

  1. 动态绑定
  2. 命名参数/可选参数
    如果不记得形参的顺序,但却知道其名称,则可以按任意顺序发送实参。
  3. 泛型协变和逆变
  4. 嵌入的互操作类型

C# 5.0 .NET Framework 4.5 2012-08-15 VisualStudio 2012

  1. 异步成员
    异步和等待(async和await) task
  2. 调用方信息特性
    (Caller Information) 可以获取有关方法调用方的信息。可以获取源代码的文件路径、源代码中的行号和调用方的成员名称。

C# 6.0 .NET Framework 4.6 2015-07-20 VisualStudio 2015

  1. C# 6 中的新增功能
  2. 静态导入
    旧代码 Math.PI * Math.Pow(Radius, 2);
    类中导入using static System.Math;后可简化为
    PI \* Pow(Radius, 2);
  3. Expression bodied 成员
    =>运算符
  4. 自动属性初始化表达式
    public string FirstName { get; set; } = string.Empty;
  5. 异常筛选器
    异常及When筛选器 上下关键字
    catch (HttpRequestException e) when (e.Message.Contains("301")) switch (obj) { case Shape shape when shape.Area == 0
  6. Null 传播器
    A?.B?[C];
    末尾运算符
    int[] xs = new[] { 0, 10, 20, 30, 40 }; int last = xs[\^1]; **\$**
  7. 字符串内插
    Console.WriteLine(\$"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.");
  8. nameof 运算符

C# 7.0 .NET Framework 4.6.2 2016-08-02 VisualStudio 2017
C# 7.0 中的新增功能

  1. Out 变量
    现在可以在方法调用的参数列表中声明 out 变量,而不是编写单独的声明语句:
    int.TryParse(input, out int result) 不用声明result
  2. 元组和析构函数
  3. 模式匹配
  4. 本地函数
  5. 已扩展 expression bodied 成员
  6. Ref 局部变量和返回结果
  7. 弃元
  8. 二进制文本和数字分隔符
  9. 引发表达式

C# 7.1 .NET Framework 4.7 2017-04-05 VisualStudio 2017 15.3

  1. async Main 方法
    应用程序的入口点可以含有 async 修饰符。
  2. default 文本表达式
    在可以推断目标类型的情况下,可在默认值表达式中使用默认文本表达式。
  3. 推断元组元素名称
    在许多情况下,可通过元组初始化来推断元组元素的名称。
  4. 泛型类型参数的模式匹配
    可以对类型为泛型类型参数的变量使用模式匹配表达式。

C# 7.2 .NET Framework 4.7.1 2017-10-17 VisualStudio 2017 15.5

  1. 编写安全高效代码的技巧
    结合了多项语法改进,可使用引用语义处理值类型。
  2. 非尾随命名参数
    命名的参数可后接位置参数。
  3. 数值文字中的前导下划线
    数值文字现可在任何打印数字前放置前导下划线。
  4. private protected 访问修饰符
    private protected 访问修饰符允许访问同一程序集中的派生类。
  5. 条件 ref 表达式 现在可以引用条件表达式 (?😃 的结果。

C# 7.3 .NET Framework 4.7.2 2018-04-30 VisualStudio 2017 15.7

  1. 无需固定即可访问固定的字段。
  2. 可以重新分配 ref 本地变量。
  3. 可以使用 stackalloc 数组上的初始值设定项。
  4. 可以对支持模式的任何类型使用 fixed 语句。
  5. 可以使用其他泛型约束。

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

posted @ 2021-04-09 16:15  末旅  阅读(1012)  评论(0编辑  收藏  举报