短路运算符
根据定义,如果第一个操作数无法确定表达式的整体结果,则短路布尔运算符将仅计算第二个操作数。
这意味着,如果你使用&&运算符 firstCondition && secondCondition 它会评估 secondCondition 只有当 firstCondition 是真实 ofcource 总体结果将是真实的,只有当两个的 firstOperand 和第二操作数被评估为 true。这在许多场景中都很有用,例如想象你要检查,而你的列表有三个以上的元素,但你还必须检查列表是否已初始化为不会遇到 NullReferenceException 。你可以实现如下:
bool hasMoreThanThreeElements = myList != null && mList.Count > 3;
** 不会检查 *mList.Count> 3,*直到 myList != null。
逻辑和
&&
是标准布尔 AND(&
)运算符的短路对应物。
var x = true;
var y = false;
x && x // Returns true.
x && y // Returns false (y is evaluated).
y && x // Returns false (x is not evaluated).
y && y // Returns false (right y is not evaluated).
逻辑或
||
是标准布尔 OR(|
)运算符的短路对应物。
var x = true;
var y = false;
x || x // Returns true (right x is not evaluated).
x || y // Returns true (y is not evaluated).
y || x // Returns true (x and y are evaluated).
y || y // Returns false (y and y are evaluated).
用法示例
if(object != null && object.Property)
// object.Property is never accessed if object is null, because of the short circuit.
Action1();
else
Action2();