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

如何处理空值?解决Supplier_Type为null时的if语句异常

问题:空值导致的条件判断异常处理

我写了下面的if语句:

if ((product.EmailType.Contains("cafe", StringComparison.OrdinalIgnoreCase)
     || product.EmailType.Contains("vendor", StringComparison.OrdinalIgnoreCase))
    && product.Supplier.Supplier_Type.Contains("Support"))
{
    // 执行操作
}

逻辑是:当EmailType包含"cafe"或"vendor"(不区分大小写),且Supplier_Type包含"Support"时执行对应操作。

但实际场景中Supplier_Type经常为null,导致代码抛出空引用异常。我希望只要Supplier_Type是null,整个if条件就判定为false,直接跳过操作。

我尝试用空合并运算符处理,结果报了这个错误:

Operator ?? cannot be applied to type bool and bool

尝试的代码如下:

if ((product.EmailType.Contains("cafe", StringComparison.OrdinalIgnoreCase)
     || product.EmailType.Contains("vendor", StringComparison.OrdinalIgnoreCase))
    && (product.Supplier.Supplier_Type.Contains("Support") ?? false))
{
    // 执行操作
}

还试了下面的空值处理写法,同样报上面的错误:

&& product.Supplier.Supplier_Type?.Contains("Support")

解决方案

问题根源在于:

  • 直接调用product.Supplier.Supplier_Type.Contains("Support")时,如果Supplier_Type为null,会直接抛出空引用异常,根本走不到空合并运算符的逻辑。
  • 而product.Supplier.Supplier_Type?.Contains("Support")返回的是bool?(可空布尔类型),但&&运算符要求两边都是bool类型,所以直接用会类型不匹配。

给你两种可行的解决写法:

写法一:短路判空(推荐,逻辑直观)

if ((product.EmailType.Contains("cafe", StringComparison.OrdinalIgnoreCase)
     || product.EmailType.Contains("vendor", StringComparison.OrdinalIgnoreCase))
    && product.Supplier.Supplier_Type != null 
    && product.Supplier.Supplier_Type.Contains("Support"))
{
    // 执行操作
}

利用&&的短路求值特性:如果前面的product.Supplier.Supplier_Type != null为false,后面的Contains方法不会被执行,直接返回false,避免了空引用异常。

写法二:可空布尔值转普通布尔值

if ((product.EmailType.Contains("cafe", StringComparison.OrdinalIgnoreCase)
     || product.EmailType.Contains("vendor", StringComparison.OrdinalIgnoreCase))
    && (product.Supplier.Supplier_Type?.Contains("Support") ?? false))
{
    // 执行操作
}

这里?.运算符会先判断Supplier_Type是否为null:

  • 如果是null,返回null(类型为bool?);
  • 如果不为null,返回Contains方法的执行结果(bool类型)。
    再通过?? false把null转换成false,最终整个表达式的结果是bool类型,符合&&的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:03:25