C#1.0~10.0特性总结
前言: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属性
不积跬步,无以至千里;不积小流,无以成江海。ヾ(◍°∇°◍)ノ゙

浙公网安备 33010602011771号