C# 1.0 版
主要功能包括:
- 类
- 结构
- 接口
- 事件
- 属性
- 委托
- 运算符和表达式
- 语句
- 特性
C# 版本 1.2
当 IEnumerator 实现 IDisposable 时,foreach 循环中生成的代码会在 IEnumerator 上调用 Dispose。
C# 2.0 版
- 泛型
- 分部类型
- 匿名方法
- 可以为 null 的值类型
- 迭代器
- 协变和逆变
C# 3.0 版
- 自动实现的属性
- 匿名类型
- 查询表达式
- Lambda 表达式
- 表达式树
- 扩展方法
- 隐式类型本地变量
- 分部方法
- 对象和集合初始值设定项
C# 4.0 版
- 动态绑定
- 命名参数/可选参数
- 泛型协变和逆变
- 嵌入的互操作类型
C# 5.0 版
- 异步成员
- 调用方信息特性
C# 6.0 版
- 静态导入
- 异常筛选器
- 自动属性初始化表达式
- Expression bodied 成员
- Null 传播器
- 字符串内插
- nameof 运算符
C# 7.0 版
- out 变量
- 元组和析构函数
- 模式匹配
- 本地函数
- 已扩展 expression bodied 成员
- ref 局部变量
- 引用返回
c# 8
- Readonly 成员
- 默认接口方法
- 模式匹配增强功能:
-
- switch 表达式
-
- 属性模式
-
- 元组模式
-
- 位置模式
- Using 声明
- 静态本地函数
- 可处置的 ref 结构
- 可为空引用类型
- 异步流
- 索引和范围
- Null 合并赋值
- 非托管构造类型
- 嵌套表达式中的 Stackalloc
- 内插逐字字符串的增强功能
c# 9
- 记录
- 仅限 Init 的资源库
- 顶级语句
- 模式匹配增强功能
- 性能和互操作性
-
- 本机大小的整数
-
- 函数指针
-
- 禁止发出 localsinit 标志
- 调整和完成功能
-
- 目标类型的 new 表达式
-
- static 匿名函数
-
- 目标类型的条件表达式
-
- 协变返回类型
-
- 扩展 GetEnumerator 支持 foreach 循环
-
- Lambda 弃元参数
-
- 本地函数的属性
- 支持代码生成器
-
- 模块初始值设定项
-
- 分部方法的新功能
C# 10 版
- 记录结构
- 结构类型的改进
- 内插字符串处理程序
- global using 指令
- 文件范围的命名空间声明
- 扩展属性模式
- 对 Lambda 表达式的改进
- 可使用 const 内插字符串
- 记录类型可密封 ToString()
- 改进型明确赋值
- 在同一析构中可同时进行赋值和声明
- 可在方法上使用 AsyncMethodBuilder 属性
- CallerArgumentExpression 属性
- 增强的 #line pragma
C# 版本 11
- 原始字符串字面量
- 泛型数学支持
- 泛型属性
- UTF-8 字符串字面量
- 字符串内插表达式中的换行符
- 列表模式
- 文件本地类型
- 必需的成员
- 自动默认结构
- 常量 string 上的模式匹配 Span
- 扩展的 nameof 范围
- 数值 IntPtr
- ref 字段和 scoped ref
- 改进了方法组向委托的转换