编程语言
首页 > 编程语言> > c# – 操作符’||’不能应用于’bool’类型的操作数?和’布尔?’

c# – 操作符’||’不能应用于’bool’类型的操作数?和’布尔?’

作者:互联网

我想检查两个字符串中的一个是否包含部分字符串.
知道firstString或secondString可以为null,我尝试了以下内容:

 string firstString= getValue();
 string secondString= getValue();

 if (firstString?.Contains("1") || secondString?.Contains("1"))
   {
     //logic
   }

我收到编译时错误,提到:

Operator ‘||’ cannot be applied to operands of type ‘bool?’ and
‘bool?’

看起来像String的结果?.Contains(“1”)是可以为空的布尔值.

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

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

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

解决方法:

这取决于您要如何评估空值:true或false.我习惯于假.

如果是这样,您可以使用null-coalescing运算符:

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

标签:c,logical-operators
来源: https://codeday.me/bug/20190717/1486441.html