运算符'||'不能应用于 'bool?' 和 'bool?' 类型的操作数
Operator '||' cannot be applied to operands of type 'bool?' and 'bool?'
我想检查两个字符串之一是否包含部分字符串。
知道 firstString 或 secondString 可以为空,我尝试了以下操作:
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..}
克服此错误的最佳方法是什么?我可以避免写两个嵌套的 if 吗?
这取决于您希望如何评估 null
值:如 true
或 false
。假的我习惯了
如果是这样,您可以使用空合并运算符:
(firstString?.Contains("1") ?? false) || (secondString?.Contains("1") ?? false)
这将是一种非常幼稚的做法,但您可以通过使用“&&”运算符检查字符串是否为空或 null 来避免 if 条件的嵌套,如下面的示例条件。
if ((!string.IsNullOrEmpty(firstString) && firstString.Contains("1")) || (!string.IsNullOrEmpty(secondString) && secondString.Contains("1")))
{
//logic
}
我想检查两个字符串之一是否包含部分字符串。 知道 firstString 或 secondString 可以为空,我尝试了以下操作:
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..}
克服此错误的最佳方法是什么?我可以避免写两个嵌套的 if 吗?
这取决于您希望如何评估 null
值:如 true
或 false
。假的我习惯了
如果是这样,您可以使用空合并运算符:
(firstString?.Contains("1") ?? false) || (secondString?.Contains("1") ?? false)
这将是一种非常幼稚的做法,但您可以通过使用“&&”运算符检查字符串是否为空或 null 来避免 if 条件的嵌套,如下面的示例条件。
if ((!string.IsNullOrEmpty(firstString) && firstString.Contains("1")) || (!string.IsNullOrEmpty(secondString) && secondString.Contains("1")))
{
//logic
}