C#语言版本历史记录:
这些是撰写本文时已知的C#版本:
- *随.NET 1.0和VS2002一起发布的 *C#1.0 (2002年1月)
- C#1.2 (非常有用); .NET 1.1和VS2003(2003年4月)发布。第一个版本的呼叫
Dispose
在IEnumerator
该实施小号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月)。主要新功能:后期绑定(
dynamic
),委托和接口泛型方差,更多COM支持,命名参数,元组数据类型和可选参数 - C#5.0 与.NET 4.5和VS2012一起发布(2012年8月)。主要功能:异步编程,呼叫者信息属性。突破性变化:循环变量闭包。
- C#6.0 与.NET 4.6和VS2015一起发布(2015年7月)。由Roslyn实现。功能:用于自动实现属性的初始化程序,使用指令导入集合初始化程序中的静态成员,异常过滤器,元素初始化程序,
await
incatch
和finally
,扩展Add
方法。 - *随.NET 4.7和VS2017(2017年3月)一起发布的 *C#7.0 主要新功能:元组,ref本地和ref返回,模式匹配(包括基于模式的switch语句),内联
out
参数声明,局部函数,二进制文字,数字分隔符和任意异步返回。 - *随VS2017 v15.3(2017年8月)一起发布的 *C#7.1 新功能:异步main,元组成员名称推断,默认表达式,与泛型的模式匹配。
- C#7.2 与VS2017 v15.5一起发布(2017年11月)新功能:私有受保护的访问修饰符,Span
,aka内部指针,aka stackonly结构 ,其他所有内容。 - *随VS2017 v15.7一起发布的 *C#7.3 (2018年5月)。新功能:枚举,委托和
unmanaged
泛型类型约束。ref
重新分配。不安全的改进:stackalloc
初始化,未固定的索引fixed
缓冲区,自定义fixed
语句。改进的重载分辨率。初始化程序和查询中的表达式变量。==
并!=
为元组定义。自动属性的后备字段现在可以通过属性作为目标。 - C#8.0 与.Net Core 3.0和VS2019 v16.3一起发布(2019年9月)。主要的新功能:可为空的引用类型,异步流,索引和范围,只读成员,使用声明,默认接口方法,静态局部函数和内插逐字字符串的增强。
针对OP的问题:
C#的正确版本号是多少?什么时候出来的?为什么找不到关于C#3.5的任何答案?
没有C#3.5这样的东西-这里引起混乱的原因是.NET 3.5中存在C#3.0。但是,语言和框架是独立版本的-CLR也是如此,它是.NET
2.0到3.5的2.0版本,尽管引入了CLR 4.0,但Service Pack还是.NET 4。.NET
4.5中的CLR进行了各种改进,但是版本控制尚不清楚:在某些地方,它可能被称为CLR
4.5(例如,此MSDN页面曾经以这种方式引用它),但是该
Environment.Version属性仍报告为4.0。 xxx。
截至2017年5月3日,C#语言团队在其GitHub存储库上创建了C#版本和功能的历史记录:C#语言版本中添加的功能。还有一个页面可以跟踪即将到来的和最近实施的语言功能。



