写点什么

C# 终于支持带标签的 break!.NET 11 Preview 7 新特性速览

作者: Almir Vuk
  • 2026-08-26
    北京
  • 本文字数:1447 字

    阅读完需:约 5 分钟

上周,Microsoft 团队发布了 .NET 11 Preview 7,此次更新为 C# 语言、ASP.NET Core、.NET MAUI、Entity Framework Core、Windows Forms 和 F# 带来了变化和改进。

在 C# 方面,breakcontinue语句现在可以指定一个外层循环或 switch,因此,代码可以直接从内层结构退出或继续执行外层结构,而无需使用标志或 goto。

string? foundValue = null;outer: for (int x = 0; x < xMax; x++){    for (int y = 0; y < yMax; y++)    {        if (GetValue(x, y) is { } value && value == target)        {            foundValue = value;            break outer;        }    }}
复制代码

此外,仍处于预览阶段的联合类型现在采用“同时尝试两者”的方式:首先针对联合本身测试模式,然后再针对其中包含的值进行测试。

相应地,switch 表达式的穷尽性检查现在也能识别受封闭类型约束的泛型参数,因此,当所有派生类型的情况均已得到处理时,编译器不再发出警告。其他工作还完善了 Unsafe Evolution 规则,并为内联数组辅助方法添加了空值检查,因此,现在从空缓冲区创建引用会确定性地抛出异常。

public closed record class Shape;public record class Circle(double Radius) : Shape;public record class Square(double Side) : Shape;static double Area<T>(T shape) where T : Shape => shape switch{    Circle(var r) => Math.PI * r * r,    Square(var s) => s * s};
复制代码

ASP.NET Core 获得了大量新增功能,其中大多数集中在 Blazor 上。当浏览器标签页被隐藏时,交互式服务器线路现在可以自行暂停,释放服务器资源,直到用户返回。新的 CacheView组件可以缓存服务器端子树的渲染输出,并在缓存命中时重新使用已存储的 HTML,从而减少处理器和内存的使用。

此外,默认启用了五个新的 Blazor 分析器,用于标记常见错误;QuickGrid 还新增了编程式滚动功能。现在内置了验证消息本地化功能,注册字符串本地化器后便会立即启用,而 ValidatableType 和 SkipValidation 属性则结束了预览阶段。

SignalR .NET 客户端现在可以在协商重定向后刷新身份验证,返回服务器发送事件的端点可以在 OpenAPI 3.2 中进行描述,应用程序还可以读取 TLS 通道绑定令牌,以防御中继攻击。

一项值得注意的变化撤销了 Preview 6 中的部分改动:自动跨源保护现在只验证选择启用该功能的端点,与 .NET 10 的行为保持一致,以免破坏现有应用程序。

对于 .NET MAUI,Preview 7 增加了跨平台通行密钥身份验证、XAML 增量热重载和 Shell 路由模板,

接下来,Entity Framework Core 现在可以将 int.Parse 及相关方法转换为 SQL Server CAST,将多种 GroupBy 模式重写为单次联接,从而生成更简洁的查询,同时还增加了对 SQLite 上 16 位 Half 类型的支持。

据报道,Azure Cosmos DB 提供程序已经过现代化改造,开始使用 System.Text.Json,此外,程序包管理器控制台新增了一个 -NoBuild 开关,用于添加和应用迁移。

Windows Forms 通过 VisualStylesMode 引入了一条可选择启用的现代渲染管线,同时还增加了响应系统视觉设置的方法、延迟显示窗体功能,以避免据报道会在启动时出现的无样式闪烁,以及一个 SuspendPainting 作用域,用于减少批量更新期间的闪烁。

F# 编程语言获得了一些小型编译器修复,包括支持在普通 let 中使用计算表达式绑定,以及在递归模块中正确解析属性。

感兴趣的读者和开发者可以在 GitHub 的 dotnet/core 仓库中查看 .NET 11 Preview 7 的完整发布说明。

原文链接:https://www.infoq.com/news/2026/08/dotnet-11-preview-7/