首页
视频
资源
登录
小可爱
什么时候才能领悟,取之越多失之越多
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
ASP.NET
16篇
JS
1篇
.NET
23篇
英语
4篇
redis
4篇
随笔
30篇
EF
3篇
前端
52篇
.net core
25篇
python
8篇
版本控制
1篇
java
2篇
nginx
2篇
docker
6篇
后端
5篇
更多
mysql
8篇
数据库
15篇
微服务
4篇
移动开发
7篇
架构
6篇
linux
2篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2023
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术
转
C#,.NET 各版本特性
1983
人阅读
2023/6/6 22:26
总访问:
766676
评论:
0
收藏:
0
手机
分类:
.NET
### 前言 使用 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?` 】 - 迭代器【`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.IsNullOrWhiteSpace`、`Stopwatch.Restart`、`StringBuilder.Clear` 等等】 - 现有方法的新重载【例如 `String.Join` 方法添加了可以连接 `IEnumerable` 集合的成员的新重载。 】 - 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 基本上就是一系列更新和优化,新东西很少。 - 异步成员【`async` 和 `await`,版本之子。】 - 调用方信息特性【`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 月 原文:https://www.cnblogs.com/gaoyunpeng/p/17459660.html
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}