C的正确版本号是什么?什么时候出来的?为什么我找不到关于C#3.5的答案
此问题主要用于帮助那些使用错误版本号(例如C#3.5搜索答案的人。希望任何未能找到错误版本号答案的人都能找到这个问题,然后用正确的版本号再次搜索
C语言版本历史记录:
以下是撰写本文时已知的C#版本:
- C#1.0与.NET 1.0和VS2002一起发布(2002年1月)
- C#1.2(很奇怪);与.NET1.1和VS2003一起发布(2003年4月)。在
IEnumerator
s上调用Dispose
的第一个版本,它实现了IDisposable
。其他一些小功能 - C#2.0与.NET 2.0和VS2005一起发布(2005年11月)。主要的新特性:泛型、匿名方法、可空类型和迭代器块
- C#3.0与.NET 3.5和VS2008一起发布(2007年11月)。主要的新特性:lambda表达式、扩展方法、表达式树、匿名类型、隐式类型(
var
)和查询表达式 - C#4.0与.NET 4和VS2010一起发布(2010年4月)。主要新特性:后期绑定(
动态
),委托和接口通用变量,更多COM支持,命名参数,元组数据类型和可选参数 - C#5.0与.NET 4.5和VS2012一起发布(2012年8月)。主要功能:异步编程和调用方信息属性。中断更改:循环变量闭包
- C#6.0与.NET 4.6和VS2015一起发布(2015年7月)。由罗斯林实施。功能:自动实现属性的初始值设定项,使用指令导入静态成员、异常筛选器、元素初始值设定项、
catch
中的wait
和最终
,扩展在集合初始值设定项中添加
方法 - C#7.0与.NET 4.7和VS2017一起发布(2017年3月)。主要的新特性:元组、ref-locals和ref-return、模式匹配(包括基于模式的switch语句)、内联
out
参数声明、本地函数、二进制文本、数字分隔符和任意异步返回 - C#7.1与VS2017 v15.3一起发布(2017年8月)。新特性:异步main、元组成员名称推断、默认表达式和与泛型的模式匹配
- C#7.2与VS2017 v15.5一起发布(2017年11月)。新功能:私有保护访问修改器,Span<;T>;,又名内部指针,又名stackonly结构,以及其他一切
- C#7.3与VS2017 v15.7一起发布(2018年5月)。新功能:枚举、委托和
非托管
泛型类型约束参考重新分配。不安全的改进:stackalloc
初始化、未固定索引的fixed
缓冲区、自定义fixed
语句。改进的重载分辨率。初始值设定项和查询中的表达式变量=和=为元组定义。自动属性的备份字段现在可以通过属性作为目标
- C#8.0与.NET Core 3.0和VS2019 v16.3一起发布(2019年9月)。主要的新特性:可空引用类型、异步流、索引和范围、只读成员、使用声明、默认接口方法、静态本地函数以及增强插值逐字字符串
- C#9.0与.NET 5.0和VS2019 v16.8一起发布(2020年11月)。主要新功能:仅初始化属性、记录、带表达式、数据类、位置记录、顶级程序、改进的模式匹配(简单类型模式、关系模式、逻辑模式)、改进的目标类型(目标类型
新
表达式、目标类型
和
?
),和协变收益。次要功能:放宽ref
和partial
修饰符的顺序、参数null检查、lambda丢弃参数、本机int
s、本地函数属性、函数指针、静态lambda、扩展GetEnumerator
、模块初始值设定项和扩展partial
针对OP的问题:
C的正确版本号是什么?什么时候出来的?为什么我找不到关于C#3.5的答案
没有像C#3.5这样的东西——这里引起混淆的原因是C#3.0出现在.NET3.5中。但是,该语言和框架的版本是独立的,CLR的版本也是独立的,在.NET 2.0到3.5版本中,CLR的版本是2.0,.NET 4引入了CLR 4.0,尽管有service Pack。NET 4.5中的CLR有各种改进,但版本控制尚不清楚:在某些地方,它可能被称为CLR 4.5(例如,此MSDN页面用于以这种方式引用它),但环境。Version
属性仍然报告4.0.xxx
截至2017年5月3日,C语言团队在其GitHub存储库中创建了C语言版本和功能的历史记录:在C语言版本中添加的功能。还有一个页面跟踪即将推出的和最近实现的语言特性