内容提要
微软发布.NET 11首个候选版(RC1),支持生产环境,计划11月正式推出。新增C# 15特性如union类型和标签化break/continue,改进内存安全、进程信号、DNS API及JSON序列化。运行时异步性能大幅提升,CoreCLR支持WebAssembly,测试工具增强,包含破坏性变更,升级时需注意。
延伸解读
RC1 的“准生证”意味着什么
RC1 附带 go-live 许可证,意味着开发者可以将其用于生产环境并获得官方支持。这是正式版发布前的重要信号,表明 API 和功能已基本稳定。但需注意,RC1 仍包含破坏性变更,升级前应仔细阅读官方发布说明中的 Breaking changes 部分,避免生产环境出现意外问题。
C# 15 新特性:更简洁的代码
C# 15 默认启用,union 类型和标签化 break/continue 正式转正。union 类型简化了“成功或失败”的表示,替代了异常或包装类;标签化 break 则解决了嵌套循环跳出难题。这些特性让代码更直观,但需注意 union 类型在 JSON 序列化等场景的配合使用,以及可能带来的学习成本。
性能提升与实验性 API 并存
Runtime Async 优化显著,异步方法分配速率暴降 92%,热路径 await 内联后循环耗时从 191ms 降至 32ms。同时,System.Net.Security 的非阻塞 TLS 状态机等实验性 API 引入,但带有 SYSLIB5007 诊断,需谨慎评估。性能提升虽诱人,但实验性 API 可能不稳定,生产使用前应充分测试。
升级需注意的破坏性变更
RC1 包含若干破坏性变更,如 decimal/double 转换、MeterListener 行为、Configuration 处理等。这些变更可能影响现有代码,升级前务必通读官方发布说明。特别是依赖旧行为的项目,需针对性调整。建议在测试环境充分验证后再部署生产。
Q&A
.NET 11 RC1 发布,它是否支持生产环境使用?
是的,.NET 11 RC1 附带 go-live 支持许可证,意味着可以放心用于生产环境,并会获得官方支持。
.NET 11 RC1 中 C# 15 新增了哪些语言特性?
C# 15 新增了 union 类型(用于表示方法可能返回成功或失败等场景)和标签化 break/continue(用于跳出嵌套循环)。
.NET 11 在运行时异步性能上有哪些改进?
运行时异步(Runtime Async)性能大幅提升,例如在 TechEmpower JSON 基准预热阶段分配速率暴降 92%,热路径 await 内联后循环一亿次从 191ms 降到 32ms。
.NET 11 RC1 在进程管理方面增加了什么新功能?
Process 类现在原生支持发送 POSIX 信号(如 SIGTERM)和检查进程终止状态,通过 ProcessExitStatus 可以区分正常退出和被信号终止。
.NET 11 在 DNS API 方面有哪些更新?
Preview 7 引入的强类型 DNS API(如 ResolveSrv、ResolveMx、ResolveTxt、ResolveCName)在 Linux 上得到支持,基于平台解析器配置,并支持自定义 DNS 服务器列表。
.NET 11 RC1 中 System.Text.Json 有哪些新功能?
System.Text.Json 内置了 BFloat16、Decimal32、Decimal64、Decimal128 的转换器,并支持 C# union 类型的序列化与反序列化,通过结构分类器自动判断 union 的 case。
.NET 11 RC1 在测试工具有哪些增强?
dotnet test 新增运行级控制,如 --timeout 设置整个测试运行超时,--maximum-failed-tests 设置失败测试数量上限;移动测试支持 Android、iOS、macOS 等目标,并提供 dotnet new androidtest 等模板。
.NET 11 RC1 有哪些破坏性变更需要注意?
RC1 包含几处破坏性变更,涉及 decimal/double 转换、MeterListener、Configuration 等,升级前建议通读官方发布说明的 Breaking changes 部分。