.NET 5
新特性
更新: 2023-12-08 12:20:48 字数: 0 字 时长: 0 分钟
2020 年 11 月 10 日,.NET 5 正式发布
.NET 5 是继 3.1 之后 .NET Core 的下一个主要版本。 出于以下两个原因,我们将此新版本命名为 .NET 5,而不是 .NET Core 4:
我们跳过了版本编号 4.x,以避免与 .NET Framework 4.x 混淆。 我们从名称中删除了“Core”,是为了强调这是 .NET 未来的主要实现。 与 .NET Core 或 .NET Framework 相比,.NET 5 会支持类型更多的应用和平台。 ASP.NET Core 5.0 虽以 .NET 5 为基础,但保留了名称“Core”以避免与 ASP.NET MVC 5 混淆。 同理,Entity Framework Core 5.0 保留了名称“Core”,以避免与 Entity Framework 5 和 Entity Framework 6 混淆。
与 .NET Core 3.1 相比,.NET 5 包含以下改进和新功能:
- C# 更新
- F# 更新
- Visual Basic 更新
- System.Text.Json 新功能
- 单一文件应用
- 应用剪裁
- Windows Arm64 和 Arm64 内部函数
- 转储调试的工具支持
- 对于可以为 null 的引用类型,运行时库的批注百分比为 80%
- 性能改进:
- 垃圾回收 (GC)
- System.Text.Json
- System.Text.RegularExpressions
- 异步 ValueTask 池
- 容器大小优化
- 更多区域
.NET 5 不会替换 .NET Framework
.NET 5 及更高版本是 .NET 未来的主要实现,但 .NET Framework 4.x 仍受支持。 目前没有计划将以下技术从 .NET Framework 移植到 .NET 5,但 .NET 中有一些替代项:
技术 | 建议使用的替代项 |
---|---|
Web 窗体 | ASP.NET Core Razor 或 Razor Pages |
Windows 工作流 (WF) | Elsa-Workflows |
.NET 5 不会替代 .NET Standard
新的应用程序开发可为所有项目类型(包括类库)指定 net5.0 目标框架名字对象 (TFM)。 在 .NET 5 工作负载之间共享代码得到了简化,因为你只需要 net5.0 TFM。
对于 .NET 5 应用和库,net5.0 TFM 合并和替换了 netcoreapp 和 netstandard TFM。 但是,如果你计划在 .NET Framework、.NET Core 和 .NET 5 工作负载之间共享代码,可以通过将 netstandard2.0 指定为 TFM 来实现此目的。
C# 更新
编写 .NET 5 应用的开发人员将有权访问最新的 C# 版本和功能。 .NET 5 与 C# 9 搭配,为语言带来了许多新功能。 下面是几个亮点:
记录:具有基于值的相等语义的引用类型和由一个新的 with 表达式支持的非破坏性变化。
关系模式匹配:将模式匹配功能扩展为关系运算符以用于比较计算和表达式,包括逻辑模式 - 新关键字 and、or 和 not。
顶级语句:作为加速采用和学习 C# 的一种方法,可以省略 Main 方法,像以下示例这样简单的应用程序是有效的:
System.Console.Write("Hello world!");
- 函数指针:公开以下中间语言 (IL) 操作码的语言构造:ldftn 和 calli。
JSON 序列化更新
System.Text.Json 中新增了一些功能:
- 保留引用并处理循环引用
- HttpClient 和 HttpContent 扩展方法
- 允许或写入带引号的数字
- 支持不可变类型和 C# 9 记录
- 支持非公共属性访问器
- 支持字段
- 有条件地忽略属性
- 支持非字符串键字典
- 允许自定义转换器处理 null
- 复制
JsonSerializerOptions
- 用 Web 默认值创建
JsonSerializerOptions