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

C# switch语句中空大括号模式匹配的作用及使用原因

C# Switch表达式中{ } s的作用解析

你看到的{ } s是C#模式匹配里的空属性模式,核心作用是匹配非null的引用类型实例,同时通过s捕获这个实例。除了替代string s的简化写法外,还有这些实际用途:

  • 类型无关的非null匹配
    如果version的类型是基类、object或者泛型参数,{ } s不需要指定具体类型就能捕获所有非null的引用类型实例,后续通过when条件筛选即可。比如当version是object类型时,传入"v1"、new StringBuilder("v2")这类不同的引用类型实例,{ } s都能捕获,而string s只会匹配字符串类型。

  • 泛型场景下的安全匹配
    在泛型代码中,如果泛型参数没有添加引用类型约束,{ } s会自动排除值类型和null,确保后续调用引用类型的方法(比如Contains)不会出错。如果直接用T s,值类型实例也会被匹配,若后续调用值类型不支持的方法,就会出现编译或运行错误。

    示例代码:

    public static string? ParseVersion<T>(T input)
    {
        return input switch
        {
            { } s when s.ToString().Contains("v3") => "Version 3 found",
            null => null,
            _ => "Unrecognized version"
        };
    }
    
  • 代码写法的一致性
    如果你的代码中需要在多个地方匹配非null的引用类型,用{ } s可以保持写法统一,不用根据变量的具体类型反复修改模式语句。

当version是明确的string类型时,{ } s和string s的效果几乎一致——都只会匹配非null的字符串实例,但{ } s的写法更通用,能轻松适配类型变化的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:26:17