C# 版本特性一览

这篇具有很好参考价值的文章主要介绍了C# 版本特性一览。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

使用 C# 作为开发语言已经 15 个年头了,受惠于 C# 的不断更新,伴随着大量的新特性与大量语法糖,让我更加容易写出简洁、高效的代码。日常中大量特性早已信手拈来,当然从未尝试过的特性更是难以尽数,但是每每回忆代码中的特性究竟是哪个版本引入的,却颇为含糊。索性简单整理记录下来,用以备忘,进而能够更精确地根据想使用的特性确定程序需要的 Framework 版本。
尽管参考了微软的官方文档,但所列特性难免基于我所接触使用到的狭隘范围,用中括号附上短评(如【我是短评】),用以提示,希望不至于画蛇添足吧。

版本一览

C# 1.0

发布日期:2002 年 1 月
一切的开始,由于我是从 2.0 开始接触 C# 的,在此不赘述该版本了,只能说 C# 的起点不低,从 Java 转过来上手很快,兼具 C 语族的语法特点,同时又很有 Delphi 味,简直梦幻开局。

C# 1.2

发布日期:2003 年 4 月
从此版本开始,当 IEnumerator 实现 IDisposable 时,foreach 循环中生成的代码会在 IEnumerator 上调用 Dispose。【刚刚知道还有这特性】

C# 2.0

发布日期:2005 年 11 月
和 Visual Studio 2005 一起发布。看看这些金光闪闪的特性吧:

  • 泛型
  • 分部类型【partial 关键字】
  • 匿名方法【利用 delegate 运算符】
  • 可为空的值类型【Nullable<T>T?
  • 迭代器【yield return 语句】
  • 协变和逆变【这时候还不支持泛型接口和委托】
  • getter/setter 单独可访问性
  • 静态类

C# 3.0

发布日期:2007 年 11 月
C# 3.0 和 Visual Studio 2008 一起发布于 2007 年下半年,但完整的语言功能是在 .NET Framework 3.5 版中发布的。如果说 2.0 时期是分庭抗礼,那么到了 3.0 就真的是一骑绝尘,诸多特性完美地结合在一起。尽管我习惯用 Lambda 表达式与链式调用来写 LINQ ,但是查询表达式写法的 LINQ 实在是太惊艳了。

  • 自动实现的属性【{ get; set; } 写法】
  • 匿名类型【new { Foo = 108, Bar = "Hello" } 写法】
  • 查询表达式【from foo select bar where baz 写法】
  • Lambda 表达式
  • 表达式树
  • 扩展方法
  • 隐式类型本地变量【var 关键字】
  • 分部方法【partial 关键字可以作用在方法上,没用过该特性】
  • 对象和集合初始值设定项【Foo foo = new Foo { Bar = "Hello" } 写法】
  • WPF、WCF、WF

C# 4.0

发布日期:2010 年 4 月
C# 版本 4.0 随 Visual Studio 2010 一起发布,引入了一些小改进。

  • 动态绑定【dynamic 关键字,不在编译时检查类型,而是在运行时评估。】
  • 命名实参和可选实参【可以少些一些方法重载了】
  • 泛型协变和逆变【完全体,但一般只有底层类库设计者需要考虑这玩意】
  • 嵌入的互操作类型【没什么存在感】
  • System.Threading.Tasks 命名空间【更方便的线程操作及并行处理】
  • System.Tuple
  • 现有类的新方法【例如 String.IsNullOrWhiteSpaceStopwatch.RestartStringBuilder.Clear 等等】
  • 现有方法的新重载【例如 String.Join 方法添加了可以连接 IEnumerable<T> 集合的成员的新重载。】
  • Managed Extensibility Framework (MEF)【动态加载,实现插件系统的好帮手】
  • ASP.NET MVC

C# 5.0

发布日期:2012 年 8 月
C# 版本 5.0 随 Visual Studio 2012 一起发布。.NET Framework 4.5、4.5.1、4.5.2 基本上就是一系列更新和优化,新东西很少。

  • 异步成员【asyncawait,版本之子。】
  • 调用方信息特性【CallerMemberName 等,方便确定调用方信息。】

C# 6.0

发布日期:2015 年 7 月
版本 6.0 随 Visual Studio 2015 一起发布,发布了很多使得 C# 编程更有效率的小功能。对应 .NET Framework 4.6、4.6.1、4.6.2。.NET Core 出现了,好消息是 .NET 开放源码了,坏消息是微软开始折腾,从这开始语法糖多得齁嗓子。得益于诸多新特性,代码变得简短了,但是引入了很多新符号,心智负担加重了。“Null 条件运算符”、“字符串内插”、“nameof 表达式”是我比较喜欢的特性。

  • 静态导入【using static 指令命名了一种类型,无需指定类型名称即可访问其静态成员和嵌套类型。】
  • 异常筛选器【catch (ExceptionType [e]) when (expr)
  • 自动属性初始化表达式【public string Foo { get; set; } = string.Empty;
  • 表达式主体定义【例如:public override string ToString() => $"{foo} {bar}";
  • Null 条件运算符【成员访问?. 或元素访问?[]
  • 字符串内插【$"{foo} {bar}"
  • nameof 表达式【nameof(Foo)

C# 7.0

发布日期:2017 年 3 月
C# 7.0 版已与 Visual Studio 2017 一起发布。 此版本继承和发展了 C# 6.0。对应 .NET Framework 4.7、4.7.1、4.7.2。“out 变量”、“模式匹配”是我比较喜欢的特性。后续的 C# 7.1、7.2、7.3 基本都在为新特性添砖加瓦。明显开始和别的语言抄来抄去,当然我们一般都称为“借鉴”。

  • out 变量【if (Int32.TryParse(foo, out int bar)) Console.WriteLine($"Converted '{foo}' to {bar}");
  • 元组【(double Foo, int Bar) t2 = (4.5, 3);
  • 模式匹配
  • 本地函数【内部函数,让我想起了 Delphi】
  • ref 局部变量【指针既视感】
  • 弃元【(_, _, foo) = bar.baz();,配合元组,你可以给,但我可以不要。】

C# 8.0

发布日期:2019 年 9 月
C# 8.0 版是专门面向 .NET C# Core 的第一个主要 C# 版本。特性列了一大篇,实在是没法看了,下面就没有一一列举,脚本语言味儿越来越重,各种操作符、关键字更是玩出花来,心智负担越发沉重了。除了模式匹配,别的特性完全不想碰。

  • 默认接口方法【抽象也能顺便带点儿实现,脑抽特性】
  • 模式匹配增强功能【来嘛,有点学不过来了啊】
  • Null 合并赋值【??=
  • 后面懒得列了……

C# 9

发布日期:2020 年 11 月
C# 9 随 .NET 5 一起发布。 它是面向 .NET 5 版本的任何程序集的默认语言版本。对于既存特性进行了梳理与调整,然后引入了一大堆新特性,这是有 KPI 压力吗?老特性千万别给我搞没了,新特性我也保证不碰,咱们心照不宣吧。

  • 记录【record 关键字,只读数据类语法糖】
  • 仅限 Init 的资源库【public int Foo { get; init; } ,只读数据类语法糖之二】
  • 顶级语句【为了少写点代码微软也是拼了】
  • 模式匹配增强功能【继续增强……】
  • 函数指针【图穷匕见,高性能计算这一块与我似乎没有交集】
  • 后面懒得列了……

C# 10

发布日期:2021 年 11 月
C# 10 继续致力于删除不必要的模式、将数据与算法分离以及提高 .NET 运行时的性能等主题。特性列表又是像写小说一样长,行吧,你开心就好。

  • 这次我一个也不想列……

C# 11

发布日期:2022 年 11 月
和前面比起来稍微节制了一点儿,优化了数学计算和字符串处理,模式匹配不用说,给我增强!

  • 泛型数学支持【不懂】
  • UTF-8 字符串字面量【"foo"u8】
  • 必需的成员【required 修饰符,KPI 味太浓了】
  • 其他的不列了……

后记

可以说从 6.0 开始就不干正事儿了,有实际意义的特性越来越少,性能增强、安全性加强什么的是值得肯定的,但是加的这一堆特性真是有点缺乏节制,我宁可在 11 的环境下写着 6 的代码。人家是“人生苦短”,我看微软是“只嫌命长”啊。文章来源地址https://www.toymoban.com/news/detail-472874.html

到了这里,关于C# 版本特性一览的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES 8.x新特性一览(完整版)

    在 2022 年 2 月 11 日,Elasticsearch(ES)正式发布了 8.0 版本,而截止到 2023 年 10 月,历经一年半时间,ES官方已经连续发布了多个版本,最新版本为 8.10.4。这一系列的更新引入了众多引人注目的新特性,按照功能模块和重要性进行整理,下面我们将介绍一些核心且引人瞩目的新

    2024年02月04日
    浏览(40)
  • Java/JDK 21正式发布!15个特性一览

    JDK 21已经于2023年9月19日正式发布。本文总结了JDK 21发布的新特性。 根据发布的规划,这次发布的 JDK 21 将是一个长期支持版(LTS 版)。LTS 版每 2 年发布一个,上一次长期支持版是 21 年 9 月发布的 JDK 17。 本版本是Java SE平台21版的参考实现,由Java社区流程中的JSR 396指定。 主

    2024年02月08日
    浏览(53)
  • 可为 null 的引用类型”在 C# 7.3 中不可用。请使用 8.0 或更高的语言版本

    在使用 using 等新语法时,在 VisualStudio 2019 会自动判断框架版本,如在 net 45 就不会自动使用最新版本的语法,需要修改项目文件 在使用 C# 8.0 之前,请在官网 下载最新的 VisualStudio 2019 版本 如果在编译时提示 “Using 声明”在 C# 7.3 中不可用。请使用 8.0 或更高的语言版本 1.

    2024年02月06日
    浏览(47)
  • 云原生周刊:Kubernetes v1.28 新特性一览 | 2023.8.14

    推荐一个 GitHub 仓库:Fast-Kubernetes。 Fast-Kubernetes 是一个涵盖了 Kubernetes 的实验室(LABs)的仓库。它提供了关于 Kubernetes 的各种主题和组件的详细内容,包括 Kubectl、Pod、Deployment、Service、ConfigMap、Volume、PV、PVC、Daemonset、Secret、Affinity、Taint-Toleration、Helm 等。仓库的目标是快速

    2024年02月13日
    浏览(41)
  • 使用 GPT4 和 ChatGPT 开发应用:前言到第三章

    原文:Developing Apps with GPT-4 and ChatGPT 译者:飞龙 协议:CC BY-NC-SA 4.0 在发布仅仅五天后,ChatGPT 就吸引了惊人的一百万用户,这在科技行业及其他领域引起了轰动。作为一个副作用,OpenAI API 用于人工智能文本生成的接口突然曝光,尽管它已经可用了三年。ChatGPT 界面展示了这

    2024年01月20日
    浏览(71)
  • C#利用自定义特性以及反射,来提大型项目的开发的效率

      在大型项目的开发过程中,需要多人协同工作,来加速项目完成进度。 比如一个软件有100个form,分给100个人来写,每个人完成自己的Form.cs的编写之后,要在Mainform调用自己写的Form。 如果按照正常的Form form1 = new Form()这种写法来构造窗口的话,相当于每个人都要改动Mainfo

    2024年02月14日
    浏览(41)
  • 每个.NET开发都应掌握的C#特性(Attribute)知识点

    上篇文章讲述了C#反射知识点,本文将介绍C#特性(Attribute)的知识点。C#特性(Attribute)是一种强大的元数据机制,用于为代码元素(如类、方法、属性等)添加信息,以影响它们的行为或提供额外的信息。本文将介绍C#特性每个.NET开发都应熟悉的知识点,希望对大家开发有

    2024年02月08日
    浏览(40)
  • Hadoop Hbase Hive 版本对照一览

    官网内容记录,仅供参考

    2024年02月13日
    浏览(38)
  • Android 系统版本与Sdk版本对应一览(更新时间:2023.02.14)

    Android 14 SDK API level 34 Android 13 SDK API level 33 Android 12L SDK API level 32 Android 12 SDK API level 31 Android 11 SDK API level 30 Android 10 SDK API level 29 Android 9 SDK API level 28 Android 8.1 SDK API level 27 Android 8.0 SDK API level 26 Android 7.1.1 SDK API level 25 Android 7.0 SDK API level 24 Android 6.0 SDK API level 23 Android 5.1 SDK A

    2023年04月09日
    浏览(90)
  • 当前主流开发语言有哪些:了解其特性、应用与示例

    随着技术飞速发展,编程语言的丰富多样性为开发者提供了广泛的选择。每种语言都有其适用的场景和独特的特性。本文将综合探讨目前市场上最流行、最多人使用的几种主流开发语言,包括它们的特点、典型应用场景以及简单示例代码。 特点 Python 因其简洁明了的语法和强

    2024年02月22日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包