.net:c#的正确版本号是什么?

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月)。第一个版本调用Dispose对实现了IDisposableIEnumerators。还有一些其他的小功能。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实现。特性:用于自动实现属性的初始化器,使用指令导入静态成员、异常过滤器、元素初始化器、集合初始化器中的awaitfinally、扩展Add方法。c# 7.0发布于。net 4.7和VS2017(2017年3月)主要的新特性:元组、ref局部变量和ref返回、模式匹配(包括基于模式的switch语句)、内联out参数声明、局部函数、二进制文字、数字分隔符和任意异步返回。c# 7.1发布了VS2017 v15.3(2017年8月)的新功能:async main, tuple成员名推断,默认表达式,模式匹配泛型。c# 7.2发布了VS2017 v15.5(2017年11月)的新功能:私有受保护的访问修饰符,Span,又名内部指针,又名stackonly结构,所有其他。c# 7.3与VS2017 v15.7一起发布(2018年5月)。新特性:enum、委托和unmanaged泛型类型约束。ref重新分配。不安全的改进:stackalloc初始化,未固定索引的fixed缓冲区,定制的fixed语句。提高重载决议。初始化器和查询中的表达式变量。为元组定义了==!=。自动属性的支持字段现在可以通过属性来定位。c# 8.0目前在预览中。预期的新特性:非空引用类型、IAsyncEnumerable支持、范围和默认接口方法。回答OP的问题:

What are the correct version numbers for C#? What came out when? Why can't I find any answers about C# 3.5?

不存在c# 3.5这样的东西——这里混淆的原因是c# 3.0出现在. net 3.5中。但是,语言和框架是独立地进行版本控制的——CLR也是如此,它是。net 2.0到3.5的2.0版,. net 4引入了CLR 4.0,尽管有服务包。. net 4.5中的CLR有许多改进,但是版本控制还不清楚:在某些地方,它可能被称为CLR 4.5(例如,这个MSDN页面用于以这种方式引用它),但是Environment.Version属性仍然报告了4.0.xxx。

有关语言、运行时和框架版本之间关系的更详细信息,请访问c# in Depth站点。这包括关于c# 3.0的哪些特性可以在针对. net 2.0时使用的信息。(如果有人想把所有的内容都放到wiki答案中,欢迎他们。)

从2017年5月3日起,c#语言团队在他们的github repo上创建了c#版本和特性的历史记录:在c#语言版本中添加的特性。还有一个页面跟踪即将到来的和最近实现的语言特性。


在处理c#的版本号时,最大的问题是它没有绑定到. net框架的版本,这似乎是由于Visual Studio和. net框架之间的同步发布。

c#的版本实际上绑定到编译器,而不是框架。例如,在visual&c; studio&c;2008中,您可以编写c# 3.0和target . net Framework 2.0、3.0和3.5。c# 3.0术语描述了代码语法的版本和支持的特性,就像ANSI C89、C90、C99描述C的代码语法/特性一样。

看看Mono,您将看到Mono 2.0(主要是由ECMA规范实现的。net框架2.0版)支持c# 3.0语法和特性。


这和这里的大多数答案是一样的,但是为了简单起见,它被制表了,并且为了完整起见,它有Visual Studio和. net版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
╔════════════╦════════════╦══════════════╦═════════════╦══════════════╗
║ 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   ║
╚════════════╩════════════╩══════════════╩═════════════╩══════════════╝

注意:. net开发在很大程度上独立于VS,它们的版本之间没有相关性。指"。NET框架版本和依赖项。


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


版本_____ ______微软编译器语言规范

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;.NET 4.5于2012年8月发布

c# 6.0;发布于。net 4.6 2015

c# 7.0;发布于。net 4.7 2017


c#版本历史:

c#是微软开发的一种简单而强大的面向对象编程语言。

c#自2002年第一次发布以来已经有了很大的发展。c#是在。net Framework 1.0中引入的。

下表列出了c#每个版本中引入的重要特性。

Enter image description here

c#的最新版本在c#版本中可用。


我在此表中总结了大多数版本。唯一缺少的应该是ASP。网络核心版本。我还添加了不同版本的ASP。净MVC。

注意,ASP。NET 5被重新命名为ASP。NET Core 1.0和ASP。NET MVC 6被重新命名为ASP。NET核心MVC 1.0.0。我相信这一变化发生在2016年1月左右。

我已经包含了ASP. net的发布日期。NET 5 RC1,但我还没有包括ASP。因为我找不到确切的发布日期。您可以阅读更多关于ASP。NET Core在这里:什么时候是ASP。NET Core 1.0 (asp.net Core 1.0)NET 5 / vNext)计划发布?

Version


您可以在这里查看最新的c#版本C# Versions


比较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