当前位置:  开发笔记 > 编程语言 > 正文

C#的正确版本号是多少?

如何解决《C#的正确版本号是多少?》经验,为你挑选了9个好方法。

C#的正确版本号是多少?什么时候出来?为什么我找不到关于C#3.5的任何答案?

这个问题主要是为了帮助那些使用不正确的版本号搜索答案的人,例如C#3.5.希望任何未能找到错误版本号的答案的人都会找到这个问题,然后再使用正确的版本号进行搜索.



1> Jon Skeet..:
C#语言版本历史:

这些是在撰写本文时已知的C#版本:

使用.NET 1.0和VS2002发布的C#1.0(2002年1月)

C#1.2(奇怪的是); 随.NET 1.1和VS2003发布(2003年4月).调用Dispose实现的IEnumerators的第一个版本IDisposable.其他一些小功能.

C#2.0随.NET 2.0和VS2005一起发布(2005年11月).主要新功能:泛型,匿名方法,可空类型,迭代器块

随.NET 3.5和VS2008发布的C#3.0(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实施.功能:自动实现属性的初始化程序,使用指令导入静态成员,异常过滤器,元素初始化程序,awaitin catch和集合初始值设定项中的finally扩展Add方法.

.NET 4.7和VS2017发布的C#7.0(2017年3月)主要新功能:元组,ref本地和ref返回,模式匹配(包括基于模式的switch语句),内联out参数声明,本地函数,二进制文字,数字分隔符和任意异步返回.

随VS2017 v15.3发布的C#7.1(2017年8月)新功能:异步主,元组成员名称推断,默认表达式,与泛型的模式匹配.

随VS2017 v15.5发布的C#7.2(2017年11月)新功能:私有保护访问修饰符,Span ,又名内部指针,又名stackonly结构,其他所有内容.

随VS2017 v15.7(2018年5月)发布的C#7.3.新功能:枚举,委托和unmanaged泛型类型约束.ref重新分配.不安全的改进:stackalloc初始化,取消固定的索引fixed缓冲区,自定义fixed语句.改进了重载分辨率.初始化器和查询中的表达式变量.==!=为元组定义.现在,属性可以定位自动属性的支持字段.

C#8.0目前处于预览状态.预期的新功能:不可为空的引用类型,Environment.Version支持,范围和默认接口方法.

针对OP的问题:

C#的正确版本号是多少?什么时候出来?为什么我找不到关于C#3.5的任何答案?

没有C#3.5这样的东西 - 这里引起混淆的原因是.NET 3.5中存在C#3.0.然而,语言和框架是独立版本的 - 就像CLR一样,.NET 2.0版本为2.0,.NET 4引入了CLR 4.0,尽管服务包也是如此..NET 4.5中的CLR有各种改进,但版本控制还不清楚:在某些地方它可能被称为CLR 4.5(例如,这个MSDN页面用于指代它),但该Dispose属性仍然报告4.0. XXX.

有关语言,运行时和框架版本之间关系的更多详细信息,请参阅深度网站中的C#.这包括有关在面向.NET 2.0时可以使用哪些C#3.0功能的信息.(如果有人想将所有内容都纳入此wiki答案,欢迎他们.)

截至2017年5月3日,C#语言团队在其github repo上创建了C#版本和功能的历史:C#语言版本中添加的功能.还有一个页面可以跟踪即将推出的和最近实现的语言功能.


对于那些建议包含并发集合的人:这是*language*特性的列表,而不是*framework*特性.注意缺少提及WPF等.
@alper:Unity不是特定版本的C#,而是.NET框架和/或运行时的特定版本.IIRC,它在CLR v2上有效,但可能有.NET 3.5的某些方面.
@nawfal:Roslyn与此无关 - 而.NET本机在某种程度上是分开的.但基本上,是的,我相信它仍然是4.
@nawfal:语言更改都不需要任何CLR更改.
@markmnl:项目通常不具有*指定的C#版本号...您可以在不同版本的Visual Studio中打开相同的项目,并找到相同的代码在一个中工作但在另一个中不起作用.您*可以*限制C#版本,尽管这是在语法而非语义基础上完成的.但是,如果您在Visual Studio 2015中创建面向.NET 4的项目,则可以使用大多数C#6功能......
@OgrishMan:不 - 你需要安装VS2017.(或Visual Studio Code,或最新的.NET Core SDK.)

2> Bryan Rehbei..:

处理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语法和功能.



3> nawfal..:

这与大多数答案相同,但是为了方便而制表,并且它具有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       ?   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    ?              ?             ?   Apr 2019   ?    
???????????????????????????????????????????????????????????????????????

注意:.NET开发现在几乎与VS无关,每个版本之间没有相关性.有关更多信息,请参阅" .NET Framework版本和依赖项 ".


那么.NET Core版本呢?

4> iTSrAVIE..:

使用Visual Studio.NET的C#1.0

使用Visual Studio 2005的C#2.0

使用Visual Studio 2008的C#3.0

使用Visual Studio 2010的C#4.0

使用Visual Studio 2012的C#5.0

使用Visual Studio 2015的C#6.0

Visual Studio 2017的C#7.0



5> Pramodh..:

版本_____语言规范______MICROSOFT编译器

C#1.0/1.2____ 2001年12月/ 2003 ___________2002年1月

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发布


你是从2002年12月在哪里获得C#2.0语言规范的?同样是2006年6月的C#4?你确定你不是在谈论完全不同的ECMA版本吗?
请参阅以下链接http://en.wikipedia.org/wiki/C_Sharp_(programming_language)

6> Milan..:

C#版本历史:

C#是Microsoft开发的一种简单而强大的面向对象编程语言.

自2002年首次发布以来,C#已经发展很多.随着.NET Framework 1.0引入了C#.

下表列出了每个C#版本中引入的重要功能.

在此输入图像描述

最新版本的C#可以在C#版本中使用.



7> Mindless..:

我已经总结了这个表中的大多数版本.唯一缺少的应该是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的发布日期,但我还没有包含ASP.NET核心1.0和其他核心版本,因为我找不到确切的发布日期.您可以在此处阅读有关ASP.NET Core的发布日期的更多信息:ASP.NET Core 1.0(ASP.NET 5/vNext)何时计划发布?

版



8> 小智..:

您可以在此处查看最新的C#版本 C#版本



9> Gennady Vani..:

比较MSDN文章"C#2.0语言和编译器中的新功能"和" Visual C#2005中的新功能 ",可以推断出"C#major_version.minor_version"是根据编译器的版本编号创建的.

有C#1.2对应的.NET 1.1和VS 2003,也称为的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

.NET3.0 <==> Visual C#2008

.NET 3.5 <==> Visual C#2008 Service Pack 1


不,如果您真的想使用该编号,则对应于.NET 3.5的C#被命名为"Visual C#2008".C#3.0功能在"Visual C#2008"中引入,这就是为什么在您链接到的页面上,它们位于"Visual C#2008的原始发行版本中的新功能"下.一般来说,使用Visual Studio版本号是个坏主意,例如,当您使用Mono进行构建时,它几乎没有意义.C#语言具有明确指定的版本号...我们知道哪个Visual C#产品最初引入了该版本的C#,但它们不是同一个东西.
推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有