或if语句中的比较顺序

时间:2018-03-05 18:03:14

标签: c#

这可能听起来像一个简单的问题,但我从未使用||运算符来检查NULL的其他可能值。 C#如何响应:

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

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

2 个答案:

答案 0 :(得分: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")

答案 1 :(得分:-2)

  

C#如何响应?

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

在这种情况下,表达式从左到右进行评估。 因此,在这种情况下,第二个是正确且最安全的选择。

if (a== null || a == "Hello") //check for null first