C# 15 新特性
更新: 2026-06-29 16:39:57 字数: 0 字 时长: 0 分钟
2026 年 3 月 25 日 C# 15 正式发布
一、三大核心语法重磅新特性
1. Union Types 联合类型(C#15 最标志性功能)
C# 原生自带判别式联合类型,对标 F# Discriminated Union,彻底替代手动基类+子类多态、object 装箱、OneOf 第三方库方案。
语法定义
csharp
union Result<T>
{
Success(T Value);
Error(string Message, int Code);
Empty;
}核心能力
- 模式匹配天然支持:
switch/is/ 解构直接匹配分支,编译器全覆盖穷尽检查,漏分支编译报错; - 轻量化存储:底层带标签值容器,无多态虚表开销,值类型语义、GC 压力极低;
- 解构访问:可直接提取分支字段:csharp
var res = Result<int>.Success(200); if(res is Success(var data)) Console.WriteLine(data); - IDE 完整支持:Preview3 补齐智能提示、重构、跳转、诊断;预览期需临时 Polyfill
UnionAttribute/IUnion,正式版内置框架支持。
适用场景
接口返回结果、事件状态、消息结构体、多类型参数、错误处理,彻底消除大量样板子类代码。
2. Collection Expression Arguments 集合表达式 with 参数扩展
C#12 推出集合字面量 [],C#15 新增首元素 with(...) 传递集合构造函数参数,无需先 new 再 Add,一行完成容量、比较器、配置初始化。
示例
csharp
// 指定预分配容量,减少扩容GC
List<string> list = [with(capacity: 100), "a", "b", "c"];
// HashSet 直接传入忽略大小写比较器
HashSet<string> hs = [with(StringComparer.OrdinalIgnoreCase), "A", "a"];
// 配合扩展切片
var source = new[] { "x", "y" };
List<string> data = [with(capacity: source.Length * 2), ..source, "z"];优势
- 统一集合初始化语法,合并构造参数+元素填充;
- 性能友好:提前指定容量规避多次数组复制;
- 兼容所有带对应构造函数的标准集合(
List<T>,HashSet<T>,Dictionary<TKey,TValue>等)。
3. Closed Hierarchies 封闭类型层级(完善子类控制)
扩展 sealed/abstract,显式声明所有派生类只能定义在当前文件内,配合 Union 类型、模式匹配协同工作。
csharp
closed abstract class Message
{
class Text(string Content) : Message;
class Binary(byte[] Data) : Message;
}编译器强制:外部程序集/文件无法新增子类,switch 模式匹配可自动判定穷尽,不需要 _ 默认分支;多用于领域固定枚举式对象模型。
二、编译器 & Roslyn 编译增强
- 穷尽匹配诊断强化 Union + Closed Hierarchy 双重校验,未覆盖全部分支直接编译错误,杜绝遗漏业务分支导致运行时异常。
- 布局扩展元数据(Extended Layout Support) 底层互操作增强,支持手动精细控制 struct 内存布局、偏移、对齐,面向 Native AOT、跨平台互操作、底层高性能组件开发优化。
- 代码分析器优化 CA1873 等性能分析器降噪,提示更精准;新增 Union 类型、集合表达式专用静态检查规则。
三、配套 .NET 11 运行时协同语言能力(和 C#15 深度绑定)
1. Runtime Async 运行时原生异步(无需预览开关)
C# async 底层重构:不再完全依赖编译器生成状态机,CoreCLR 运行时原生调度异步暂停/恢复。
- 异步方法开销大幅下降,栈追踪更干净;
- Native AOT 完整支持;
- .NET11 目标项目默认启用,不再需要
<EnablePreviewFeatures>true。不属于 C#语法,但 C# async/await 执行模型完全受益此更新。
2. 泛型、Json、标准库配套语言适配
- System.Text.Json 原生支持序列化 Union 联合类型,新增
JsonNamingPolicy.PascalCase; - 集合 API 适配
with表达式,所有标准集合增加兼容构造入口; - 新增
BFloat16半精度浮点类型,C# 直接字面量与运算支持,面向 AI 数值计算场景。
四、性能与开发体验收益总览
- 代码精简 Union 替代多子类/OneOf;集合
with消除先 new 再填充的多行样板;Closed Hierarchy 简化固定领域模型。 - 运行性能提升 Union 无虚表、集合预分配容量、Runtime Async 降低异步开销、JIT 新增 switch 折叠/边界消除优化。
- 编译期安全 穷尽模式匹配、封闭层级限制外部派生,大量运行时异常前置为编译报错。
- 统一语法范式 集合字面量完整闭环,初始化逻辑统一写在
[]内部,代码可读性大幅提升。
五、当前预览版使用限制
- Union 类型:Preview 阶段需手动添加
UnionAttribute、IUnionpolyfill,正式版移入System.Runtime.CompilerServices内置; - 需安装 .NET 11 Preview SDK + Visual Studio 2026 Insider;
- 项目语言版本设置
<LangVersion>preview</LangVersion>。





