You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 12 switch语句括号数量合规性问询:两种写法为何均被编译器接受?

C# 12 Switch语句括号规范:哪种写法更合理?

首先明确:两个示例的代码在C#12编译器下都能正常编译运行,但从语法规范和设计意图来看,示例2的写法是更符合C#12新特性的标准写法,原因如下:

两种写法的本质区别

  • 示例1:switch ((value, Frozen)) 是将value和Frozen打包成一个元组实例后进行模式匹配,这是C#7及以后就支持的元组switch写法,并非C#12新增特性。
  • 示例2:switch (value, Frozen) 是C#12专门引入的**多参数switch(参数化switch)**语法,允许直接将多个表达式作为switch的输入,不需要额外包裹元组括号,是为简化多条件模式匹配而设计的原生语法。

代码对比验证

示例1(元组兼容写法)

switch ((value, Frozen))
{
    case ( >= 0 and <= 9, false):
        break;
    case (_, false):
        break;
    case (_, true):
        break;
}

示例2(C#12原生多参数写法)

switch (value, Frozen)
{
    case ( >= 0 and <= 9, false):
        break;
    case (_, false):
        break;
    case (_, true):
        break;
}

规范建议

虽然两种写法都能通过编译,但示例2的写法更简洁,也更贴合C#12新增特性的设计初衷,是官方文档推荐的多条件switch写法。示例1的写法属于利用元组兼容性的“兼容式写法”,并非针对多参数场景的最优选择。

内容的提问来源于stack exchange,提问作者Lars Holm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 07:14:58