什么是C#的正确版本号?
什么是C#的正确版本号? 什么时候出来? 为什么我找不到关于C#3.5的任何答案?
这个问题主要是为了帮助那些正在使用不正确的版本号寻找答案的人,例如“C#3.5”。 希望没有find错误版本号的答案的人会发现这个问题,然后再用正确的版本号再次search。
这是在撰写本文时已知的C#版本:
- .NET 1.0和VS2002(2002年1月)发布的C#1.0
- C#1.2 (奇怪的是); .NET 1.1和VS2003(2003年4月)发布。 在
IEnumerator
上实现IDisposable
第一个版本调用Dispose
。 其他一些小function。 - C#2.0与.NET 2.0和VS2005(2005年11月)发布。 主要的新function:generics,匿名方法,可空types,迭代器块
- .NET 3.5和VS2008(2007年11月)发布的C#3.0 。 主要的新function:lambdaexpression式,扩展方法,expression式树,匿名types,隐式types(
var
),查询expression式 - C#4.0与.NET 4和VS2010(2010年4月)发布。 主要新特性:后期绑定(
dynamic
),委托和接口通用方差,更多COM支持,命名参数,元组数据types和可选参数 - .NET 4.5和VS2012(2012年8月)发布的C#5.0 。 主要function :asynchronous编程,来电者信息属性。 打破变化: 循环variablesclosures 。
- C#6.0与.NET 4.6和VS2015(2015年7月)发布。 由Roslyn实现。 特性:自动实现属性的初始值设定项,使用指令导入静态成员,exceptionfilter,索引成员和元素初始值设定项,
await
catch
,finally
在collection初始值设定项中Add
扩展方法。 - .NET 4.7和VS2017发布的C#7.0 (2017年3月)主要新特性:元组,ref本地和ref返回,模式匹配(包括基于模式的switch语句),内联
out
参数声明,局部函数,二进制文字,数字分隔符,和任意的asynchronous返回。 - 使用.NET 4.7和VS2017 v15.3发布的C#7.1 (2017年8月)次要新function: asynchronous主数据 , 元组成员名称推断 , 默认expression式 , 与generics模式匹配 。
有没有这样的事情,如C#3.5 – 这里混淆的原因是在.NET 3.5中存在的C#3.0。 然而,语言和框架是独立版本的,就像CLR 2.0版本是.NET 2.0到3.5,.NET 4引入了CLR 4.0,尽pipe如此。 .NET 4.5中的CLR有不同的改进,但是版本控制还不清楚:在某些地方,它可能被称为CLR 4.5(例如, 这个MSDN页面就是用来引用它的),但是Environment.Version
属性仍然报告4.0.xxx。
有关语言,运行时和框架版本之间关系的更多详细信息,请参阅C#深入网站。 这包括有关定位.NET 2.0时可以使用的C#3.0的哪些function的信息。 (如果有人想把所有的内容带到这个wiki的答案,他们欢迎。)
截至2017年5月3日,C#语言团队在其github上创build了C#版本和function的历史logging: 使用C#语言版本添加的function
处理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语言的代码语法相同的方式描述了代码语法的版本和支持的function。
看一下Mono ,你会发现Mono 2.0(主要是ECMA规范中实现的.NET Framework 2.0版本)支持C#3.0的语法和特性。
-
C#1.0与Visual Studio.NET
-
C#2.0与Visual Studio 2005
-
C#3.0与Visual Studio 2008
-
C#4.0与Visual Studio 2010
-
C#5.0与Visual Studio 2012
-
C#6.0与Visual Studio 2015
-
C#7.0与Visual Studio 2017
这和大多数答案一样,但为了方便起见,为了完整起见,还有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 ║ ║ 5.0 ║ 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 ║ ║ ╚════════════╩════════════╩══════════════╩═════════════╩══════════════╝
版本 _____
语言规范______
MICROSOFT编译器
C# 1.0 / 1.2 ____
2001年12月? / 2003 ? ___________
一月2002 ?
C#2.0 _______
2005年9月 ________________
2005 年 11月?
C#3.0 _______
2006年5月 _____________________
2006 年 11月?
C#4.0 _______
2009年3月(草稿) ______________
2010年4月?
C#5.0; 在2012年8月与.NET 4.5一起发布
C#6.0; 与.NET 4.6 2015发布
C#7.0; 与.NET 4.7 2017一起发布
你可以在这里查看最新的C#版本
C#版本历史logging:
C#是Microsoft开发的一个简单而强大的面向对象编程语言。
自从2002年第一个版本以来,C#已经发展了很多。C#被引入了.NET Framework 1.0。
下表列出了每个C#版本中引入的重要function。
最新版本的C#可以在C#版本中使用 。
通过比较MSDN文章“C#2.0语言和编译器中 的新特性 ”和“ Visual C#2005中的新特性 ”,可以推断出“C#major_version.minor_version”是根据编译器的版本号创build的。
C#1.2对应于.NET 1.1和VS 2003 ,也被命名为Visual C#.NET 2003 。
但微软进一步停止增加次要版本(点)之后的数字,或让他们不是零, 0
。 尽pipe需要注意的是,与.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
- .NET3.0 <==> Visual C#2008
- .NET 3.5 <==> Visual C#2008 Service Pack 1
我已经总结了这个表格中的大部分版本。 唯一缺less的应该是ASP.NET Core版本。 我还添加了不同版本的ASP.NET MVC。
请注意,ASP.NET 5已重新命名为ASP.NET Core 1.0,而ASP.NET MVC 6已重新命名为ASP.NET Core MVC 1.0.0。 我相信这个变化发生在2016年1月左右。
我已经在表格中包含了ASP.NET 5 RC1的发布date,但是我还没有包含ASP.NET核心1.0和其他核心版本,因为我找不到确切的发布date。 您可以在这里阅读有关ASP.NET Core的发布date的更多信息: ASP.NET Core 1.0(ASP.NET 5 / vNext)何时计划发布?