C#的正确版本号是什么?什么时候出来的?为什么我找不到有关C#3.5的任何答案?
这个问题主要是为了帮助那些使用错误版本号(例如C#3.5)搜索答案的人。希望任何没有找到错误版本号答案的人都能找到这个问题,然后用正确的版本号再次搜索。
C#的正确版本号是什么?什么时候出来的?为什么我找不到有关C#3.5的任何答案?
这个问题主要是为了帮助那些使用错误版本号(例如C#3.5)搜索答案的人。希望任何没有找到错误版本号答案的人都能找到这个问题,然后用正确的版本号再次搜索。
当前回答
C#语言版本历史记录:
以下是编写本文时已知的C#版本:
C#1.0与.NET 1.0和VS2002一起发布(2002年1月)C#1.2(足够奇怪);与.NET 1.1和VS2003一起发布(2003年4月)。对实现IDisposable的IEnumerators调用Dispose的第一个版本。其他一些小功能。与.NET 2.0和VS2005一起发布的C#2.0(2005年11月)。主要新特性:泛型、匿名方法、可空类型和迭代器块C#3.0与.NET 3.5和VS2008一起发布(2007年11月)。主要新特性:lambda表达式、扩展方法、表达式树、匿名类型、隐式类型(var)和查询表达式与.NET 4和VS2010一起发布的C#4.0(2010年4月)。主要的新特性:后期绑定(动态)、委托和接口泛型差异、更多COM支持、命名参数、元组数据类型和可选参数C#5.0与.NET 4.5和VS2012一起发布(2012年8月)。主要功能:异步编程和调用者信息属性。中断更改:循环变量关闭。C#6.0与.NET 4.6和VS2015一起发布(2015年7月)。由Roslyn实施。功能:自动实现的财产的初始值设定项,使用指令导入静态成员、异常过滤器、元素初始值设定值设定项、捕获中等待以及集合初始值设定中的扩展Add方法。C#7.0与.NET 4.7和VS2017一起发布(2017年3月)。主要新功能:元组、ref局部变量和ref返回、模式匹配(包括基于模式的开关语句)、内联参数声明、本地函数、二进制文本、数字分隔符和任意异步返回。C#7.1与VS2017 v15.3一起发布(2017年8月)。新特性:异步主、元组成员名称推断、默认表达式以及与泛型的模式匹配。C#7.2随VS2017 v15.5发布(2017年11月)。新功能:私有保护访问修饰符、Span<T>、又名内部指针、又名堆栈结构以及其他所有功能。C#7.3随VS2017 v15.7发布(2018年5月)。新功能:枚举、委托和非托管泛型类型约束。ref重新分配。不安全的改进:堆栈锁定初始化、未固定的索引固定缓冲区、自定义固定语句。提高过载分辨率。初始化器和查询中的表达式变量。==和!=为元组定义。汽车制造商的支持字段现在可以通过属性作为目标。C#8.0与.NET Core 3.0和VS2019 v16.3一起发布(2019年9月)。主要的新特性:可为空的引用类型、异步流、索引和范围、只读成员、使用声明、默认接口方法、静态本地函数以及内插逐字字符串的增强。C#9.0与.NET 5.0和VS2019 v16.8一起发布(2020年11月)。主要新功能:初始财产、记录、with-expressions、数据类、位置记录、顶级程序、改进的模式匹配(简单类型模式、关系模式、逻辑模式)、改进的目标类型(目标类型新表达式、目标类型?和?)以及协变返回。次要功能:放松ref和partial修饰符的排序、参数null检查、lambda丢弃参数、本机int、本地函数的属性、函数指针、静态lambda、扩展GetEnumerator、模块初始化器和扩展partial。C#10.0与.NET 6.0一起发布(2021 11月)。主要新功能:记录结构、结构无参数构造函数、插值字符串处理程序、全局使用指令、文件范围的命名空间声明、扩展属性模式、常量插值字符串、解构中的混合赋值和声明、单个方法的异步方法生成器(通过属性)、参数的CallerArgumentExpression属性、,增强的#line pragmas。C#11.0随.NET 7.0发布(2022年11月)。主要新功能:文件范围类型、通用数学支持、自动默认结构、模式匹配常量字符串上的Span<char>、扩展范围名称、数字IntPtr、UTF-8字符串文本、必需成员、ref字段和范围ref、原始字符串文本、改进的方法组转换为委托、警告波形7、通用属性、字符串插值表达式中的换行符、列表模式
针对OP的问题:
C#的正确版本号是什么?什么时候出来的?为什么我找不到有关C#3.5的任何答案?
没有C#3.5这样的东西——这里的混淆是因为.NET 3.5中存在C#3.0。然而,语言和框架的版本是独立的,正如CLR一样,它的版本为2.0,适用于.NET 2.0到3.5,.NET 4引入了CLR 4.0,尽管有服务包。.NET4.5中的CLR有各种改进,但版本控制尚不清楚:在某些地方,它可能被称为CLR 4.5(例如,此MSDN页面曾以这种方式引用它),但Environment.Version属性仍然报告4.0.xxx。
截至2017年5月3日,C#语言团队在其GitHub存储库中创建了C#版本和功能的历史记录:C#语言版本中添加的功能。还有一个跟踪即将推出和最近实现的语言功能的页面。
其他回答
预览:C#11.0.NET Core 7.0 Visual Studio 2022更新1
阅读更多信息
允许在插值字符串的“孔”中使用换行符列出模式参数空值检查与可为空的引用类型的交互泛型属性字段关键字接口中的静态摘要或模式下的声明记录和初始化受歧视的工会T的参数范围语句作为表达式表达式树类型系统扩展
Visual Studio.NET中的C#1.0Visual Studio 2005中的C#2.0Visual Studio 2008中的C#3.0Visual Studio 2010中的C#4.0C#5.0与Visual Studio 2012Visual Studio 2015中的C#6.0C#7.0与Visual Studio 2017C#8.0与Visual Studio 2019C#9.0与Visual Studio 2019
您可以在此处查看最新的C#版本
Version | Language specification | Microsoft compiler |
---|---|---|
C# 1.0/1.2 | December 2001?/2003? | January 2002? |
C# 2.0 | September 2005 | November 2005? |
C# 3.0 | May 2006 | November 2006? |
C# 4.0 | March 2009 (draft) | April 2010? |
C# 5.0 | Released with .NET 4.5 in August 2012 | |
C# 6.0 | Released with .NET 4.6 2015 | |
C# 7.0 | Released with .NET 4.7 2017 | |
C# 8.0 | Released with .NET 4.8 2019 |
我总结了本表中的大多数版本。唯一缺少的应该是ASP.NET核心版本。我还添加了不同版本的ASP.NET MVC。
请注意,ASP.NET 5已更名为ASP.NET Core 1.0,ASP.NET MVC 6已更名为ASP.NETCore MVC 1.0.0。我相信这一变化发生在2016年1月左右。
我已经在表中列出了ASP.NET 5 RC1的发布日期,但我还没有包括ASP.NET核心1.0和其他核心版本,因为我找不到确切的发布日期。您可以在此处阅读有关ASP.NET Core的发布日期的更多信息:ASP.NET Core 1.0(ASP.NET 5/vNext)计划于何时发布?