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

C#中switch的default分支能否放中间/开头?是否兼容所有版本?

在C#中把switch的default分支放在中间(和case 2合并)是否安全且兼容所有版本?

这种写法完全安全,而且兼容所有C#版本——从C# 1.0发布开始,switch语句的default分支就允许放在任意位置,这是C#语言规范明确规定的内容。

逻辑说明

switch的执行逻辑是:先逐一匹配case分支,找到匹配项就跳转到对应位置执行;如果没有任何case匹配,就会跳转到default分支的位置执行。当你把default和case 2放在一起且中间没有break时,不管是default:在前还是case 2:在前,只要没有匹配到case 1或case 3,都会执行这段共用代码,逻辑上完全等价。

验证代码(你提供的测试用例)

[TestMethod]
public void SwitchMethodWithDefaultsInMiddle()
{
    Func<int, string> func = (n) => {
        string ret = "";
        switch (n)
        {
            case 1:
                // code for case 1 here...
                ret = "case 1";
                break;
            default:
            case 2:
                // code here is for default and case 2
                ret = "case 2 or default";
                break;
            case 3:
                // code for case 3 here...
                ret = "case 3";
                break;
        }
        return ret;
    };

    Assert.AreEqual("case 1", func(1));
    Assert.AreEqual("case 2 or default", func(2));
    Assert.AreEqual("case 3", func(3));

    Assert.AreEqual("case 2 or default", func(0));
    Assert.AreEqual("case 2 or default", func(4));
}

这段测试代码已经验证了这种写法的正确性:无论是匹配case 2,还是触发默认分支,都会返回预期的结果。

团队规范建议

虽然语法上完全没问题,但作为团队规范推行时,最好确保所有成员都理解这种写法的逻辑,避免后续维护时出现误解。可以在代码中保留清晰的注释,明确说明这段分支同时处理case 2和默认情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:02:15