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

C#中三元运算符是否有简写方式避免重复求值表达式?

在C#三元运算符中复用条件表达式结果的方案

C#目前没有原生语法支持在三元运算符的分支里直接复用条件部分的表达式结果,你自己想到的提取变量的方式是最常用、可读性最好的解决方案,完全推荐使用。

除此之外,在C# 8.0及更高版本中,还可以通过以下两种方式避免重复编写长表达式:

1. 使用Switch表达式

这是C# 8+引入的语法,写法更简洁直观:

bool? foo = model.People.SingleOrDefault(x => x.Age > 21 && x.Name.StartsWith("Jo")) switch
{
    null => null,
    var item => item.IsEnabled == "true"
};

2. 结合模式匹配的is var语法

可以先把表达式结果绑定到变量,再用三元运算符判断:

bool? foo = model.People.SingleOrDefault(x => x.Age > 21 && x.Name.StartsWith("Jo")) is var item
    ? item == null ? null : item.IsEnabled == "true"
    : null;

不过要注意,上述两种语法糖本质上和你提取变量的思路一致,只是写法不同。提取独立变量的方式在代码清晰度上更有优势,不会带来额外的语法复杂度,在大多数业务场景中都是最优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:35:23