运算符'||'不能应用于类型 'bool?' 和 'bool?' 的操作数



我想检查两个字符串之一是否包含部分字符串。知道第一串或第二串可能是无效的,我尝试了以下操作:

 string firstString= getValue();
 string secondString= getValue();
 if (firstString?.Contains("1") || secondString?.Contains("1"))
   {
     //logic
   }

我遇到了一个编译时间错误,提到:

操作员'||'不能应用于"布尔"类型的操作数?和 "布尔?"

似乎是字符串的结果吗?contains(" 1"(是无效的布尔。

这个错误实际上对我来说确实很有意义,因为运行时间可能会面对:

{null||true, null||false, null||null, etc..}

覆盖此错误的最佳方法是什么?我可以避免写两个嵌套吗?

这取决于您要如何评估null值:为truefalse。我习惯了错误。

如果是这样,您可以使用Null-Coalescing Operator:

(firstString?.Contains("1") ?? false) || (secondString?.Contains("1") ?? false)

这将是一种非常幼稚的做法,但是您可以通过检查"&&''"的空或null的字符串来避免嵌套IF条件。操作员,如下样品条件。

if ((!string.IsNullOrEmpty(firstString) && firstString.Contains("1")) || (!string.IsNullOrEmpty(secondString) && secondString.Contains("1")))
{
                //logic
}

相关内容

  • 没有找到相关文章

最新更新