C#各版本新增加功能,系列文章 C# 规范建议

  本系列文章主要整理并介绍 C# 各版本的新增功能与规范建议。

C# 9.0

C# 9.0 向 C# 语言添加了以下功能和增强功能:

  • 记录
  • 仅限 Init 的资源库
  • 顶级语句
  • 模式匹配增强功能
  • 本机大小的整数
  • 函数指针
  • 禁止发出 localsinit 标志
  • 目标类型的新表达式
  • 静态匿名函数
  • 目标类型的条件表达式
  • 协变返回类型
  • 扩展 GetEnumerator 支持 foreach 循环
  • Lambda 弃元参数
  • 本地函数的属性
  • 模块初始值设定项
  • 分部方法的新功能

C# 语言版本控制。

C#9.0 新增功能

C# 8.0

C#8.0 于 2019年4月 随 .NET Framework 4.8 与 Visual Studio 2019 一同发布,但是当前处于预览状态。预计在2019年9月正式发布。

目前提供以下功能可供试用:

  • Readonly 成员
  • 默认接口成员【*重要,突破性的变革*】请参考:C#8.0 中使用默认接口成员更新接口
  • 模式匹配增强功能:Using 声明
    • Switch 表达式
    • 属性模式
    • 元组模式
    • 位置模式
  • 静态本地函数
  • 可处置的 ref 结构
  • 可为空引用类型
  • 异步流【*重要*
  • 索引和范围

具体新增功能请查看 C#8.0 新增功能

C# 7.3

C#7.3 随 VS2017 v15.7 发布(2018年5月)。 .NET Core 2.1 SDK 起,开始随附 C# 7.3。

C#7.3 新增功能

C# 7.2

C#7.2 随 VS2017 v15.5 发布(2017年11月)。自 Visual Studio 2017 版本 15.5.NET Core 2.0 SDK 起,开始随附 C# 7.2。

具体新增功能请查看 C#7.2 新增功能

C# 7.1

C#7.1 随 VS2017 v15.3 发布(2017年8月)。 自 Visual Studio 2017 版本 15.3.NET Core 2.0 SDK 起,开始随附 C# 7.1。

具体新增功能请查看 C#7.1 新增功能

C# 7.0

C#7.0 于 2017年3月 随 .NET 4.7 和 VS2017 发布。

C#7.0 新增功能

C# 6.0

C#6.0 在 2015 年7月随着.NET Framework 4.6 一同发布,后期发布了.NET Framework 4.6.1,4.6.2。

所以对喜欢简洁代码的用户来说,此语言版本非常成功。

C#6.0 新增功能

C# 编译器现在是用 C# 编写的,你可以使用编译器作为编程工作的一部分。

C# 5.0

C#5.0 在 2012 年2月随着.NET Framework 4.5 一同发布,后期发布了.NET Framework 4.5.1,4.5.2。对此版本中所做的几乎所有工作都归入另一个突破性语言概念:适用于异步编程的 asyncawait 模型。

C#5.0 新增功能01 异步编程

C#5.0 新增功能02 调用方信息

C# 4.0

C# 4.0 版和 Visual Studio 2010 一起发布于 2010 年4月,对应 .NET Framework 4.0。很快成为一种简洁精炼的语言。此版本引入了以下新功能:

C#4.0 新增功能01 动态绑定 (dynamic 类型)

C#4.0 新增功能02 命名实参和可选实参

C#4.0 新增功能03 泛型中的协变和逆变

C#4.0 新增功能04 嵌入的互操作类型

C# 3.0

C# 3.0 版和 Visual Studio 2008 一起发布于 2007 年下半年,但完整的语言功能是在 .NET Framework 3.5 版中发布的。 此版本标示着 C# 发展过程中的重大更改。 C# 成为了真正强大的编程语言。

下面列出的功能中大多数似乎都是不可或缺,难以分割的。 它们的组合都是经过巧妙布局。 我们通常认为 C# 版本的杀手锏是查询表达式,也就是语言集成查询 (LINQ)。LINQ 的构造可以建立在更细微的视图检查表达式树、Lambda 表达式以及匿名类型的基础上。 不过无论如何 C# 3.0 都提出了革命性的概念。 C# 3.0 开始为 C# 转变为面向对象/函数式混合语言打下基础。

C#3.0 新增功能01 自动实现的属性

C#3.0 新增功能02 匿名类型

C#3.0 新增功能03 隐式类型本地变量

C#3.0 新增功能04 扩展方法

C#3.0 新增功能05 分部方法

C#3.0 新增功能06 对象和集合初始值设定项

C#3.0 新增功能07 查询表达式

C#3.0 新增功能08 Lambda表达式

C#3.0 新增功能09 LINQ 基础01 语言集成查询

C#3.0 新增功能09 LINQ 基础02 LINQ 查询简介

C#3.0 新增功能09 LINQ 基础03 LINQ 和泛型类型

C#3.0 新增功能09 LINQ 基础04 基本 LINQ 查询操作

C#3.0 新增功能09 LINQ 基础05 使用 LINQ 进行数据转换

C#3.0 新增功能09 LINQ 基础06 LINQ 查询操作中的类型关系

C#3.0 新增功能09 LINQ 基础07 LINQ 中的查询语法和方法语法

C#3.0 新增功能09 LINQ 基础08 支持 LINQ 的 C# 功能

C#3.0 新增功能09 LINQ 标准查询运算符 01 概述

C#3.0 新增功能09 LINQ 标准查询运算符 02 查询表达式语法

C#3.0 新增功能09 LINQ 标准查询运算符 03 按执行方式的分类

C#3.0 新增功能09 LINQ 标准查询运算符 04 运算

C#3.0 新增功能10 表达式树 01 简介

C#3.0 新增功能10 表达式树 02 说明

C#3.0 新增功能10 表达式树 03 支持表达式树的框架类型

C#3.0 新增功能10 表达式树 04 执行表达式

C#3.0 新增功能10 表达式树 05 解释表达式

C#3.0 新增功能10 表达式树 06 生成表达式

C#3.0 新增功能10 表达式树 07 翻译(转换)表达式

C# 2.0

微软于2005年11月发布了.NET Framework 2.0,同时发布了Visual Studio 2005,同步对应的C#升级到了2.0版本。

C#2.0 新增功能01 分部类与分部方法

C#2.0 新增功能02 泛型

C#2.0 新增功能03 匿名方法

C#2.0 新增功能04 可以为 null 的类型

C#2.0 新增功能05 迭代器

C#2.0 新增功能06 协变与逆变

C#2.0 新增功能07 getter/setter 单独可访问性

除现有功能以外的其他 C# 2.0 功能:

  • 方法组转换(委托)
  • 静态类
  • 委托推断

C# 1.2

Dispose。

C# 1.0

C# 1.0 的主要功能包括:

C# 与 .NET Framework 对应关系

下表中列出 C#、.NET、VS版本对应关系

C#版本

发布时间

.NET 版本

VS版本

CLR版本

C#1.0

2002-02-13

.NET Framework 1.0

VS.NET 2002

1.0

C#1.1

C#1.2

2003-04-24

.NET Framework 1.1

VS.NET 2003

1.1

C#2.0

C#3.0(除Linq)

2005-11-07

.NET Framework 2.0

VS2005

2.0

C#3.0(除Linq)

2006-11

.NET Framework 3.0

VS2008

2.0

C#3.0

2007-11-19

.NET Framework 3.5

VS2008

2.0

C#4.0

2010-4-12

.NET Framework 4.0

VS2010

4

C#5.0

2012-02-20

.NET Framework 4.5

VS2012

4

C#5.0

2013-10-17

.NET Framework 4.5.1

VS2013

4

C#5.0

2014-05-05

.NET Framework 4.5.2

VS2013

4

C#6.0

2015-07-26

.NET Framework 4.6

VS2015(v14)

4

C#6.0

2015-11-30

.NET Framework 4.6.1

VS2015(v14)

4

C#7.0

2016-08-02

.NET Framework 4.6.2

VS2017(v15)

4

C#7.1

2017-04-05

.NET Framework 4.7

VS2017(v15.3)

4

C#7.2

2017-10-17

.NET Framework 4.7.1

VS2017(v15.5)

4

C#7.3

2018-04-30

.NET Framework 4.7.2

VS2017(v15.7)

4

C#8.0

2019-04-18

.NET Framework 4.8

VS2019(v16)

4

转载:https://www.cnblogs.com/SavionZhang/p/11229640.html

https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-version-history