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

C#模式匹配能否对属性值做运算处理后再执行匹配校验?

C#模式匹配属性运算校验实现方案

C# 支持对属性值做运算后再进行模式匹配校验,你给出的写法不合法,是因为属性模式的右侧仅支持合法模式表达式,不支持直接写任意布尔运算语句。

针对你需要判断Baz.Length >5的场景,有两种常用的合法实现方式:

方式1:嵌套属性模式(推荐,C# 8.0及以上支持)

对于直接访问属性的简单运算,可以直接把属性访问路径写到模式的左侧,语法最简洁:

if (test is { Bar: >= 100, Baz.Length: > 5 })
{
    // 业务逻辑
}

方式2:变量捕获+后续判断(适合复杂运算场景)

如果需要做更复杂的运算(比如调用方法、多步计算等),可以先用var模式捕获属性值,再追加判断条件:

// 示例:对Baz做去空格后再判断长度
if (test is { Bar: >= 100, Baz: var baz } && baz.Trim().Length > 5)
{
    // 业务逻辑
}

如果是在switch分支中使用,也可以搭配when子句实现:

switch (test)
{
    case { Bar: >= 100 } when test.Baz.Length > 5:
        // 业务逻辑
        break;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:15:03