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

如何为null合并操作添加条件,仅当overrideRequired为true时执行GetOverrideColor?

条件化null合并运算符的实现方案

问题描述

现有一段使用null合并运算符的简写代码:

return GetOverrideColor(overrideFlags, colorUsage) ??
       GetColor(colorExpression, field, purpose, defaultColor);

希望给这段代码添加额外条件:仅当overrideRequired为true时才执行GetOverrideColor方法,对应的长写法实现如下:

CustomColor color = null;

if (overrideRequired)
    color = GetOverrideColor(overrideFlags, colorUsage);

if (color == null)
    color = GetColor(colorExpression, field, purpose, defaultColor);

return color;

请问能否用简写形式实现该逻辑?

解决方案

完全可以实现,只需用三元运算符配合null合并运算符,就能在保持简写风格的同时满足条件需求:

return (overrideRequired ? GetOverrideColor(overrideFlags, colorUsage) : null) ??
       GetColor(colorExpression, field, purpose, defaultColor);

逻辑解释

  • 当overrideRequired为true时,执行GetOverrideColor方法,将其结果与GetColor的结果做null合并:如果前者不为null则返回前者,否则返回后者。
  • 当overrideRequired为false时,三元运算符返回null,此时null合并运算符会直接执行并返回GetColor的结果,和长写法的逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:08:18