C# 的正确版本号是多少? [英] What are the correct version numbers for C#?
问题描述
C# 的正确版本号是多少?什么时候出来的?为什么我找不到关于 C# 3.5 的任何答案?
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.希望任何未能找到错误版本号的答案的人都会找到这个问题,然后使用正确的版本号再次搜索.
This question is primarily to aid those who are searching for an answer using an incorrect version number, e.g. C# 3.5. The hope is that anyone failing to find an answer with the wrong version number will find this question and then search again with the right version number.
推荐答案
C# 语言版本历史:
这些是 C# 版本 在撰写本文时已知:
- C# 1.0 随 .NET 1.0 和 VS2002 一起发布(2002 年 1 月)
- C# 1.2(很奇怪);随 .NET 1.1 和 VS2003(2003 年 4 月)一起发布.在实现
IDisposable
的IEnumerator
上调用Dispose
的第一个版本.其他一些小功能. - 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 实施.功能:用于自动实现的属性的初始化程序,使用用于导入静态成员、异常过滤器、元素初始值设定项、
catch
和finally
中的await
、扩展Add
方法的指令集合初始值设定项. - C# 7.0 随 .NET 4.7 和 VS2017(2017 年 3 月)一起发布.主要新功能:元组,ref locals and ref return, 模式匹配(包括基于模式的 switch 语句), 内联
out
参数声明, local函数, 二进制文字,数字分隔ors 和 任意异步返回. - C# 7.1 随 VS2017 v15.3(2017 年 8 月)一起发布.新功能:异步主、元组成员名称推断、默认表达式,以及与泛型匹配的模式.
- C# 7.2 随 VS2017 v15.5(2017 年 11 月)一起发布.新功能:私有保护访问修饰符、Span<T>,又名内部指针,又名 stackonly 结构,以及 其他一切.
- C# 7.3 随 VS2017 v15.7(2018 年 5 月)一起发布.新功能:枚举、委托和<代码>非托管泛型类型约束.
ref
重新分配.不安全的改进:stackalloc
初始化、未固定索引的fixed
缓冲区、自定义fixed
语句.改进了重载分辨率.初始值设定项和查询中的表达式变量.==
和!=
为元组定义.现在可以按属性定位自动属性的支持字段. - C# 8.0 随 .NET Core 3.0 和 VS2019 v16.3(2019 年 9 月)一起发布.主要新功能:可空引用类型、异步流,索引和范围,只读成员,使用声明,默认接口方法,静态本地函数 和 增强内插逐字串.
- C# 9.0 随.NET 5.0<一起发布/a> 和 VS2019 v16.8(2020 年 11 月).主要新功能:init-only 属性,记录、with-expressions、数据类、位置记录、顶级程序,改进模式匹配(简单类型模式、关系模式、逻辑模式)、改进的目标类型(目标类型
new
表达式、目标类型??
和?
) 和协变返回.次要功能:放宽ref
和partial
修饰符的排序、参数空检查、lambda 丢弃参数、原生int
s、本地函数的属性、函数指针、静态 lambda、扩展GetEnumerator
、模块初始值设定项和扩展部分. - C# 10.0 随 .NET 6.0 一起发布(2021 年 11 月).主要新功能:记录结构、无参数结构构造函数、内插字符串处理程序、全局
using
指令、文件范围的命名空间声明、扩展属性模式、const 内插字符串、解构中的混合赋值和声明、单个方法的异步方法构建器(通过属性)、参数的CallerArgumentExpression
属性,增强的#line
编译指示.
- C# 1.0 released with .NET 1.0 and VS2002 (January 2002)
- C# 1.2 (bizarrely enough); released with .NET 1.1 and VS2003 (April 2003). First version to call
Dispose
onIEnumerator
s which implementedIDisposable
. A few other small features. - C# 2.0 released with .NET 2.0 and VS2005 (November 2005). Major new features: generics, anonymous methods, nullable types, and iterator blocks
- C# 3.0 released with .NET 3.5 and VS2008 (November 2007). Major new features: lambda expressions, extension methods, expression trees, anonymous types, implicit typing (
var
), and query expressions - C# 4.0 released with .NET 4 and VS2010 (April 2010). Major new features: late binding (
dynamic
), delegate and interface generic variance, more COM support, named arguments, tuple data type and optional parameters - C# 5.0 released with .NET 4.5 and VS2012 (August 2012). Major features: async programming, and caller info attributes. Breaking change: loop variable closure.
- C# 6.0 released with .NET 4.6 and VS2015 (July 2015). Implemented by Roslyn. Features: initializers for automatically implemented properties, using directives to import static members, exception filters, element initializers,
await
incatch
andfinally
, extensionAdd
methods in collection initializers. - C# 7.0 released with .NET 4.7 and VS2017 (March 2017). Major new features: tuples, ref locals and ref return, pattern matching (including pattern-based switch statements), inline
out
parameter declarations, local functions, binary literals, digit separators, and arbitrary async returns. - C# 7.1 released with VS2017 v15.3 (August 2017). New features: async main, tuple member name inference, default expression, and pattern matching with generics.
- C# 7.2 released with VS2017 v15.5 (November 2017). New features: private protected access modifier, Span<T>, aka interior pointer, aka stackonly struct, and everything else.
- C# 7.3 released with VS2017 v15.7 (May 2018). New features: enum, delegate and
unmanaged
generic type constraints.ref
reassignment. Unsafe improvements:stackalloc
initialization, unpinned indexedfixed
buffers, customfixed
statements. Improved overloading resolution. Expression variables in initializers and queries.==
and!=
defined for tuples. Auto-properties' backing fields can now be targeted by attributes. - C# 8.0 released with .NET Core 3.0 and VS2019 v16.3 (September 2019). Major new features: nullable reference-types, asynchronous streams, indices and ranges, readonly members, using declarations, default interface methods, static local functions, and enhancement of interpolated verbatim strings.
- C# 9.0 released with .NET 5.0 and VS2019 v16.8 (November 2020). Major new features: init-only properties, records, with-expressions, data classes, positional records, top-level programs, improved pattern matching (simple type patterns, relational patterns, logical patterns), improved target typing (target-type
new
expressions, target typed??
and?
), and covariant returns. Minor features: relax ordering ofref
andpartial
modifiers, parameter null checking, lambda discard parameters, nativeint
s, attributes on local functions, function pointers, static lambdas, extensionGetEnumerator
, module initializers, and extending partial. - C# 10.0 released with .NET 6.0 (November 2021). Major new features: record structs, struct parameterless constructors, interpolated string handlers, global
using
directives, file-scoped namespace declarations, extended property patterns, const interpolated strings, mixed assignment and declaration in deconstruction, async method builders (via attributes) for individual methods, theCallerArgumentExpression
attribute for parameters, enhanced#line
pragmas.
C# 的正确版本号是多少?什么时候出来的?为什么我找不到有关 C# 3.5 的任何答案?
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 一样,它是 2.0 版,适用于 .NET 2.0 到 3.5,.NET 4 引入了 CLR 4.0,尽管有服务包..NET 4.5 中的 CLR 有各种改进,但版本控制尚不清楚:在某些地方它可能被称为 CLR 4.5 (这个 MSDN 页面 曾经以这种方式引用它,例如),但是 Environment.Version
属性仍然报告 4.0.xxx.
There is no such thing as C# 3.5 - the cause of confusion here is that the C# 3.0 is present in .NET 3.5. The language and framework are versioned independently, however - as is the CLR, which is at version 2.0 for .NET 2.0 through 3.5, .NET 4 introducing CLR 4.0, service packs notwithstanding. The CLR in .NET 4.5 has various improvements, but the versioning is unclear: in some places it may be referred to as CLR 4.5 (this MSDN page used to refer to it that way, for example), but the Environment.Version
property still reports 4.0.xxx.
截至 2017 年 5 月 3 日,C# 语言团队在其 GitHub 存储库中创建了 C# 版本和功能的历史记录:C# 语言版本中添加的功能.还有 一个页面,用于跟踪即将推出和最近实施的语言功能.
As of May 3, 2017, the C# Language Team created a history of C# versions and features on their GitHub repository: Features Added in C# Language Versions. There is also a page that tracks upcoming and recently implemented language features.
这篇关于C# 的正确版本号是多少?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!