或if语句中的比较顺序[重复]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

这可能听起来像一个简单的问题,但我从来没有使用||运算符检查NULL与另一个可能的值。 C#的响应方式有何不同:

if (a == "Hello" || a == null)

与:

if (a== null || a == "Hello")
c#
2个回答
3
投票

它可以有所作为。

布尔运算符短路。如果布尔表达式的第一部分可以确定整个表达式的结果,那么它将停在那里。对于问题中的确切样本,这无关紧要,但想象你有这个:

if (a.property == "hello" || a == null)

如果anull,那将抛出异常。这不会:

if (a == null || a.property == "hello")

您还可以使用null-conditional和null-coalescing运算符:

if (a ?? "hello" == "hello")

要么

if (a?.property ?? "hello" == "hello")

-2
投票

C#的响应方式有何不同?

C#如何回应没有区别,所以秩序很重要。

在这种情况下,表达式从左到右进行评估。所以第二个是正确的,在这种条件下是一个语义上最安全的选择。

if (a== null || a == "Hello") //check for null first
© www.soinside.com 2019 - 2024. All rights reserved.