一尘不染

C# 的正确版本号是什么?

c#

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

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


阅读 220

收藏
2022-01-26

共1个答案

一尘不染

C#语言版本历史:

以下是撰写本文时已知的 C# 版本:

  • C# 1.0与 .NET 1.0 和 VS2002 一起发布(2002 年 1 月)
  • C# 1.2(很奇怪);与 .NET 1.1 和 VS2003(2003 年 4 月)一起发布。第一个调用 s 的版本Dispose实现IEnumeratorIDisposable. 其他一些小功能。
  • 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实施。特点:自动实现属性的初始化器,使用指令导入静态成员,异常过滤器,元素初始化器,awaitincatchfinally,集合初始化器中的扩展Add方法。
  • C# 7.0随 .NET 4.7 和 VS2017(2017 年 3 月)一起发布。主要新特性元组ref locals 和 ref return模式匹配(包括基于模式的 switch 语句)、内联out参数声明本地函数二进制文字、数字分隔符任意异步返回
  • C# 7.1随 VS2017 v15.3(2017 年 8 月)一起发布。新特性:async main元组成员名称推断默认表达式与泛型匹配的模式
  • C# 7.2随 VS2017 v15.5(2017 年 11 月)一起发布。新功能:私有受保护访问修饰符Span、又名内部指针、又名 stackonly 结构其他所有内容
  • C# 7.3随 VS2017 v15.7(2018 年 5 月)一起发布。新特性:枚举、委托和unmanaged泛型类型约束ref重新分配。不安全的改进:stackalloc初始化、未固定的索引fixed缓冲区、自定义fixed语句。改进的重载分辨率。初始化程序和查询中的表达式变量。==!=为元组定义。自动属性的支持字段现在可以由属性定位。
  • C# 8.0随 .NET Core 3.0 和 VS2019 v16.3(2019 年 9 月)一起发布。主要的新特性可为空的引用类型异步流索引和范围只读成员使用声明默认接口方法静态局部函数以及插值逐字字符串的增强
  • C# 9.0.NET 5.0和 VS2019 v16.8(2020 年 11 月)一起发布。主要新特性init-only 属性记录with-expressions、数据类、位置记录、顶级程序改进的模式匹配(简单类型模式、关系模式、逻辑模式)、改进的目标类型(目标类型new表达式、目标类型???),以及协变返回。次要功能:放宽refpartial修饰符的排序、参数空检查、lambda 丢弃参数、native ints、本地函数的属性、函数指针、静态 lambda、扩展GetEnumerator、模块初始化器和扩展部分。
  • C# 10.0与 .NET 6.0 一起发布(2021 年 11 月)。主要新特性:记录结构、结构无参数构造函数、插值字符串处理程序、全局using指令、文件范围的命名空间声明、扩展属性模式、常量插值字符串、解构中的混合赋值和声明、单个方法的异步方法构建器(通过属性),参数的CallerArgumentExpression属性,增强的#line编译指示。

针对OP的问题:

C# 的正确版本号是什么?什么时候出来的?为什么我找不到关于 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。

2022-01-26