1. 由来
C#(C Sharp)是微软公司.NET项目下的主要编程语言,其语法风格继承了C系列(C++、Java)编程语言的语法特性。C#是面向对象,面向组件,类型安全的计算机高级编程语言。
从2000年微软开始.NET项目以来,C#已经发布了10个大的版本;C#1.0发布于2002年,2023年11月发布了C#12.0版本。
2. 版本
版本 | 日期 | 主要功能 |
---|---|---|
C#1.0 | 2002 | 类/结构/接口/委托/事件/属性/特性/运算符和表达式/语句 |
C#1.2 | 2003 | 迭代器调用Dispose方法 |
C#2.0 | 2005 | 泛型/分部类型/匿名方法/协变和逆变/可为null的值类型/迭代器/委托推断 |
C#3.0 | 2007 | 自动实现的属性/匿名类型/查询表达式/Lambda表达式/表达式树/扩展方法/分部方法/隐式类型分部变量/对象和集合初始值设定项 |
C#4.0 | 2010 | 动态类型/命名参数和可选参数/泛型协变和逆变/嵌入的互操作类型 |
C#5.0 | 2012 | 异步成员/调用方信息特性 |
C#6.0 | 2015 | 静态导入/异常筛选器/null传播器/nameof运算符/自动属性初始化集表达式/索引初始化表达式/Expression bodied 成员/字符串内插 |
C#7.0 | 2017 | out变量/元组和析构函数/模式匹配/本地函数/已扩展的Expression bodied 成员/Ref局部变量和返回结果 |
C#7.1 | 2017 | async Main方法/default文本表达式/推断元组元素名称/泛型类型的模式匹配 |
C#7.2 | 2017 | 条件ref表达式/private protected修饰符/数值文字中的前导下划线 |
C#7.3 | 2018 | 功能的性能增量改进 |
C#8.0 | 2019 | Readonly 成员/默认接口方法/Switch 表达式/属性模式/元组模式/位置模式/Using 声明/静态本地函数/可处置的 ref 结构/可为空引用类型/异步流/索引和范围/Null 合并赋值/非托管构造类型/嵌套表达式中的 Stackalloc/内插逐字字符串的增强功能 |
C#9.0 | 2020 | 记录/仅限 Init 的资源库/顶级语句/模式匹配增强功能/本机大小的整数/函数指针/禁止发出 localsinit 标志/目标类型的 new 表达式/static 匿名函数/目标类型的条件表达式/协变返回类型/扩展 GetEnumerator 支持 foreach 循环/Lambda 弃元参数/本地函数的属性/模块初始值设定项/分部方法的新功能 |
C#10.0 | 2021 | 记录结构/结构类型的改进/内插字符串处理程序/global using 指令/文件范围的命名空间声明/扩展属性模式/可使用 const 内插字符串/记录类型可密封 ToString()/在同一析构中可同时进行赋值和声明/可在方法上使用 AsyncMethodBuilder 属性 |
C#11.0 | 2022 | 原始字符串字面量/泛型数学支持/泛型属性/UTF-8 字符串字面量/字符串内插表达式中的换行符/列表模式/文件本地类型/必需的成员/自动默认结构/常量 string 上的模式匹配 Span<char>/扩展的 nameof 范围/数值 IntPtr/ref 字段和 scoped ref改进了方法组向委托的转换 |
C#12.0 | 2023 | 主构造函数/Lambda 表达式中的可选参数/任何类型的别名/内联数组/集合表达式/拦截器 |
3. 发展
在2000年微软将COOL更名为C#,正式发布了C#1.0版本,实现了C#作为高级编程语言的基础语法定义,在1.0中还未实现泛型和LINQ。
C#2.0版本中实现了迭代器和增加了泛型,其重要性不言而喻。在C#3.0中实现了LINQ,大大的提高和改善了C#的生产力。C# 4.0 新增 dynamic关键字,实现了动态编程。在C#5.0版本中,一个重大的语言突破就是引入了异步编程,添加实现了async和await的模型。
从C#6.0/C#7.0/C#7.1/C#7.2/C#7.3版本中,语言的改进主要着眼于提供语法糖的改进,用以改善代码的可读性和编程效率。
C#8.0版是专门面向.NET Core的第一个主要版本。C#9.0同样做了很多改进,比如顶级语句、记录等,并且该版本是与.NET5一同发布的。2021年11月发布了最新的C#10.0版本,同步发布的还有vs2022和.NET6。
目前,最新版本为C#12.0。.NET8.0在2023年11月进行发布,.NET8.0属于LTS版本。