根据定义,如果第一个操作数不能确定表达式的整体结果,则短路布尔运算符将仅计算第二个操作数。
这意味着,如果使用&&operator作为firstCondition&&secondCondition,则只有当firstCondition为true时,它才会计算secondCondition;而对于source,只有当firstOperand和secondOperand都计算为true时,整个结果才会为true。这在许多场景中都很有用,例如,假设您希望检查列表中有三个以上的元素,但您还必须检查列表是否已初始化为不运行NullReferenceException。您可以通过以下方式实现:
bool hasMoreThanThreeElements = myList != null &&mList.Count> 3;
在满足myList!= null之前,不会检查mList.Count> 3。
逻辑与
&&是标准布尔值AND(&)运算符的短路对应项。
var x = true; var y = false; x && x // 返回true。 x && y // 返回false(评估y)。 y && x // 返回false(不评估x)。 y && y // 返回false(不评估正确的y)。
逻辑或
||是标准布尔值OR(|)运算符的短路对应项。
var x = true; var y = false; x || x // 返回true(不评估右边的x)。 x || y // 返回true(不评估y)。 y || x // 返回true(对x和y进行求值)。 y || y // 返回false(评估y和y)。
用法示例
if(object != null && object.Property) //如果对象为空,则永远不会访问属性,因为短路。 Action1(); else Action2();