OR Comparison order in if statement
本问题已经有最佳答案,请猛点这里访问。
这听起来可能是一个简单的问题,但我从未使用
1 | if (a =="Hello" || a == null) |
对比:
1 | if (a== null || a =="Hello") |
这会有所不同。
布尔运算符短路。如果布尔表达式的第一部分可以确定整个表达式的结果,那么它将在那里停止。对于问题中的精确样本来说,这并不重要,但是假设您有:
1 | if (a.property =="hello" || a == null) |
如果
1 | if (a == null || a.property =="hello") |
还可以使用空条件和空合并运算符:
1 | if (a ??"hello" =="hello") |
或
1 | if (a?.property ??"hello" =="hello") |
Is there a difference in how C# responds to ?
在这种情况下,表达式从左到右进行计算。所以第二个是正确的,在这个条件下,语义上最安全的选择。
1 | if (a== null || a =="Hello") //check for null first |