我想检查两个字符串之一是否包含部分字符串。知道第一串或第二串可能是无效的,我尝试了以下操作:
string firstString= getValue();
string secondString= getValue();
if (firstString?.Contains("1") || secondString?.Contains("1"))
{
//logic
}
我遇到了一个编译时间错误,提到:
操作员'||'不能应用于"布尔"类型的操作数?和 "布尔?"
似乎是字符串的结果吗?contains(" 1"(是无效的布尔。
这个错误实际上对我来说确实很有意义,因为运行时间可能会面对:
{null||true, null||false, null||null, etc..}
覆盖此错误的最佳方法是什么?我可以避免写两个嵌套吗?
这取决于您要如何评估null
值:为true
或false
。我习惯了错误。
如果是这样,您可以使用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
}