我想检查两个字符串中的一个是否包含部分字符串。 知道firstString或secondString可以为null,我尝试了以下内容:
string firstString= getValue();
string secondString= getValue();
if (firstString?.Contains("1") || secondString?.Contains("1"))
{
//logic
}
我收到编译时错误,提到:
运营商'||'不能应用于'bool'类型的操作数?和 '布尔?'
看起来像String的结果?.Contains(“1”)是可以为空的布尔值。
这个错误实际上对我有意义,因为运行时间可能会面临:
{null||true, null||false, null||null, etc..}
覆盖此错误的最佳方法是什么?我可以避免写两个嵌套的ifs吗?
答案 0 :(得分:10)
这取决于您要评估null
值的方式:true
或false
。我习惯了。
如果是这样,您可以使用null-coalescing运算符:
(firstString?.Contains("1") ?? false) || (secondString?.Contains("1") ?? false)
答案 1 :(得分:0)
这将是一种非常天真的做法,但您可以通过检查字符串为空或使用“&&”来避免嵌套if条件。运算符,作为下面的示例条件。
if ((!string.IsNullOrEmpty(firstString) && firstString.Contains("1")) || (!string.IsNullOrEmpty(secondString) && secondString.Contains("1")))
{
//logic
}