这个问题在这里已有答案:
这可能听起来像一个简单的问题,但我从来没有使用||
运算符检查NULL
与另一个可能的值。 C#的响应方式有何不同:
if (a == "Hello" || a == null)
与:
if (a== null || a == "Hello")
它可以有所作为。
布尔运算符短路。如果布尔表达式的第一部分可以确定整个表达式的结果,那么它将停在那里。对于问题中的确切样本,这无关紧要,但想象你有这个:
if (a.property == "hello" || a == null)
如果a
是null
,那将抛出异常。这不会:
if (a == null || a.property == "hello")
您还可以使用null-conditional和null-coalescing运算符:
if (a ?? "hello" == "hello")
要么
if (a?.property ?? "hello" == "hello")
C#的响应方式有何不同?
C#
如何回应没有区别,所以秩序很重要。
在这种情况下,表达式从左到右进行评估。所以第二个是正确的,在这种条件下是一个语义上最安全的选择。
if (a== null || a == "Hello") //check for null first