C#能否使用三元条件运算符执行语句而非仅返回表达式?
结论
你设想的自定义三目类语句运算符当前原生C#并不支持,但可以通过现有语法实现完全等价的简洁写法,无需写完整的if/else块。
原因说明
C# 原生的三元运算符?:本质是表达式,要求必须有明确的返回值,且不支持自定义全新的操作符符号(比如你举例的!?!?),所以你示例中的写法无法直接通过语法扩展实现。
替代实现方案(C# 7.0及以上版本支持)
可以借助弃元_ + 括号封装赋值表达式实现你要的效果,写法和三元运算符几乎一致:
// 完全等价于 if (isBob) { a = "Bob"; } else { b = "Steve"; } _ = isBob ? (a = "Bob") : (b = "Steve");
这里的_是C#的弃元语法,不需要接收返回值,仅用来承接三元运算符的返回结果,执行逻辑和你预期的完全一致。
注意事项
如果分支内是多行语句逻辑,更推荐使用标准if/else块保证可读性,上述简化写法仅适合单语句的轻量分支场景。
内容的提问来源于stack exchange,提问作者Gabe Tucker
相关产品推荐
相关产品推荐

