2025年,微软发布了备受期待的 .NET 10,这是继 .NET 9 之后的又一长期支持(LTS)版本,支持周期为三年。本次更新涵盖了运行时、库、C# 14、.NET MAUI、ASP.NET Core、Entity Framework Core 等多个方面,旨在提升性能、增强安全性,并优化开发者体验。
运行时性能优化
.NET 10 在运行时方面进行了多项优化:
- 数组接口方法去虚拟化:JIT 编译器现在能够去虚拟化数组接口方法,提高数组枚举的性能。
- 值类型数组的栈分配:小型、固定大小且不包含 GC 指针的值类型数组现在可以在栈上分配,减少堆内存使用,提升性能。
- AVX10.2 支持:引入了对 x64 架构处理器的 AVX10.2 指令集的支持,为未来的硬件优化做好准备。
库功能增强
.NET 10 的库部分也带来了诸多改进:
- 支持多种哈希算法的证书查找:新增方法允许使用 SHA-256 等哈希算法查找证书,提升安全性。
- ISOWeek 支持 DateOnly 类型:ISOWeek 类现在支持 DateOnly 类型,简化日期计算。
- 字符串规范化 API 支持 Span:新增 API 支持对字符 Span 进行 Unicode 字符串规范化,减少内存分配。
- 数字排序的字符串比较:引入 CompareOptions.NumericOrdering 选项,实现按数字顺序进行字符串比较。
- ZipArchive 性能提升:优化了 ZipArchive 的性能和内存使用,特别是在 Update 模式下和并行提取时。
C# 14 新特性
C# 14 引入了多项语言增强功能:
- 字段支持的属性:通过使用 field 关键字,开发者可以更灵活地从自动实现的属性过渡到自定义的 get 和 set 访问器。
- nameof 支持未绑定泛型类型:nameof 表达式现在支持未绑定的泛型类型,如 List<>。
- Span 类型的隐式转换:引入了对 Span<T> 和 ReadOnlySpan<T> 的隐式转换,简化了这些类型的使用。
- Lambda 表达式参数修饰符:现在可以在 Lambda 表达式中使用 ref、in、out 等参数修饰符,而无需显式声明参数类型。
ASP.NET Core 与 Blazor 更新
ASP.NET Core 和 Blazor 也迎来了重要更新:
- OpenAPI 3.1 支持:ASP.NET Core 现在支持 OpenAPI 3.1,改善了与 JSON Schema 的集成。
- Blazor 静态资源优化:Blazor 框架的 JavaScript 现在作为静态 Web 资源发布,压缩后体积减少了 76%。
.NET MAUI 与跨平台支持
.NET MAUI 在 .NET 10 中专注于提升质量和跨平台支持:
- 控件增强:CollectionView 和 CarouselView 的处理程序在 iOS 和 Mac Catalyst 上默认启用,提升了性能和稳定性。
- Android 支持更新:支持 Android 16(API 36)和 JDK 21,推荐的最低支持 API 级别更新为 24。
SDK 与工具链改进
.NET 10 的 SDK 和工具链也进行了优化:
- 框架提供的包引用修剪:NuGet 审计功能现在可以修剪项目未使用的框架提供的包引用,减少构建时间和磁盘空间使用。