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

如何用更精炼简化的方式编写C#空值检查代码?

优化方案

首先你这段代码里的三元运算符完全是多余的——括号里的表达式本身就返回bool值,没必要多此一举转成true/false。接下来结合你想学习的?.运算符,给你几种更简洁安全的写法:

1. 最推荐的简洁写法

bool HasPassed = "Passed".Equals(result?.Identifier);

这个写法的好处:

  • 用?.运算符自动处理result为null的情况,此时result?.Identifier返回null
  • 调用常量字符串的Equals方法,即使参数是null也不会抛空引用异常,直接返回false,完全符合你原逻辑的判断结果

2. 保留原调用顺序的写法

如果你习惯用Identifier的Equals方法,也可以这么写:

bool HasPassed = result?.Identifier?.Equals("Passed") ?? false;

解释:

  • result?.Identifier先判断result是否为null,null的话直接返回null,不会继续调用Equals
  • 当result?.Identifier?.Equals("Passed")返回null时(也就是result为null或者Identifier为null),用??空合并运算符把null转换成false,最终得到正确的bool值

对比原代码的优化点

  • 去掉了冗余的三元运算符,代码更简洁
  • 用?.替代了手动的result != null判断,可读性更好
  • 两种写法都避免了空引用异常的风险(原代码其实也不会抛,但优化后的写法更优雅)

测试一下你的示例场景:

  • 当result = null时,两种写法都返回false
  • 当result.Identifier = "Passed"时,返回true
  • 当result.Identifier是其他值或者null时,返回false,完全符合你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:31:19