C#的正确版本号是什么?什么时候出来的?为什么我找不到有关C#3.5的任何答案?
这个问题主要是为了帮助那些使用错误版本号(例如C#3.5)搜索答案的人。希望任何没有找到错误版本号答案的人都能找到这个问题,然后用正确的版本号再次搜索。
C#的正确版本号是什么?什么时候出来的?为什么我找不到有关C#3.5的任何答案?
这个问题主要是为了帮助那些使用错误版本号(例如C#3.5)搜索答案的人。希望任何没有找到错误版本号答案的人都能找到这个问题,然后用正确的版本号再次搜索。
当前回答
比较MSDN文章“C#2.0语言和编译器中的新增功能”和“Visual C#2005中的新增”,可以推断出“C#major_version.minor_version”是根据编译器的版本编号创建的。
有与.NET 1.1和VS 2003相对应的C#1.2,也称为Visual C#.NET 2003。
但在进一步的研究中,微软停止了增加次要版本(在点之后)的数字,或者让它们不是零,0。尽管应该注意,与.NET 3.5对应的C#在msdn.microsoft.com中被命名为“Visual C#2008 Service Pack 1”。
有两种并行命名:按.NET/编译器主要版本编号和Visual Studio编号。
C#2.0是Visual C#2005的同义词
C#3.0对应(或者更准确地说,可以针对):
.NET 2.0<==>Visual C#2005.NET 3.0<==>Visual C#2008.NET 3.5<==>Visual C#2008 Service Pack 1
其他回答
处理C#版本号时最大的问题是,它没有绑定到.NET Framework版本,这似乎是由于Visual Studio和.NET Framework之间的同步发布。
C#的版本实际上绑定到编译器,而不是框架。例如,在Visual Studio 2008中,您可以编写C#3.0,并以.NET Framework 2.0、3.0和3.5为目标。C#3.0命名法描述代码语法和支持功能的版本,与ANSI C89、C90和C99描述C的代码语法和功能的方式相同。
看看Mono,你会发现Mono 2.0(大部分是从ECMA规范中实现的.NET Framework 2.0版本)支持C#3.0语法和特性。
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#版本
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#语言版本中添加的功能。还有一个跟踪即将推出和最近实现的语言功能的页面。
这与这里的大多数答案相同,但为了方便起见,将其制成表格,并且它有Visual Studio和.NET版本以确保完整性。
C# version | VS version | .NET version | CLR version | Release date |
---|---|---|---|---|
1.0 | 2002 | 1.0 | 1.0 | Feb 2002 |
1.2 | 2003 | 1.1 | 1.1 | Apr 2003 |
2.0 | 2005 | 2.0 | 2.0 | Nov 2005 |
3.0 | 2.0 | Nov 2006 | ||
3.0 | 2008 | 3.5 | 2.0 | Nov 2007 |
4.0 | 2010 | 4.0 | 4 | Apr 2010 |
5.0 | 2012 | 4.5 | 4 | Aug 2012 |
2013 | 4.5.1 | 4 | Oct 2013 | |
4.5.2 | 4 | May 2014 | ||
6.0 | 2015 | 4.6 | 4 | Jul 2015 |
4.6.1 | 4 | Nov 2015 | ||
4.6.2 | 4 | Aug 2016 | ||
7.0 | 2017 | Mar 2017 | ||
4.7 | 4 | May 2017 | ||
7.1 | 2017 (v15.3) | Aug 2017 | ||
4.7.1 | 4 | Oct 2017 | ||
7.2 | 2017 (v15.5) | Dec 2017 | ||
4.7.2 | 4 | Apr 2018 | ||
7.3 | 2017 (v15.7) | May 2018 | ||
8.0 | 2019 | 4.8 | 4 | Apr 2019 |
4.8.1 | 4 | Aug 2022 |
.NET Core之后的版本
C# version | VS version | .NET version | Release date | End of Support |
---|---|---|---|---|
2015 Update 3 | .NET Core 1.0 | Jun 2016 | Jun 2019 | |
.NET Core 1.1 | Nov 2016 | Jun 2019 | ||
7.0 | 2017 | Mar 2017 | ||
7.1 | 2017 (v15.3) | .NET Core 2.0 | Aug 2017 | Oct 2018 |
7.3 | 2017 (v15.7) | .NET Core 2.1 | May 2018 | Aug 2021 |
.NET Core 2.2 | Dec 2018 | Dec 2019 | ||
8.0 | 2019 | Apr 2019 | ||
2019 (v16.3) | .NET Core 3.0 | Sep 2019 | Mar 2020 | |
2019 (v16.4) | .NET Core 3.1 | Dec 2019 | Dec 2022 | |
9.0 | 2019 (v16.8) | .NET 5 | Nov 2020 | May 2022 |
10.0 | 2022 | .NET 6 | Nov 2021 | Nov 2024 |
11.0 | 2022 (17.4) | .NET 7 | Nov 2022 | May 2024 |
.NET 8 | Nov 2023 | Nov 2026 |
*-.NET 5.0不是.NET framework的更新版本,而是.NET Core 3。从.NET 5.0开始,没有更新版本的.NET完整框架。
**-.NET Core没有单独的CLR(CoreCLR)版本。无论.NET Core版本是什么,都是CoreCLR版本。所以不提它。
注意:.NET在很大程度上独立于VS和编译器版本,每个版本之间没有相关性。以上列表并不意味着某些版本的.NET与某些C#或VS版本绑定。这只是按照发布的时间顺序(VS/C#和.NET)编译的。有些发布恰好在一起,因此它们位于同一行。有关详细信息,请参阅“.NET Framework版本和依赖项”和“.NET发布节奏”。