短路运算符

根据定义,如果第一个操作数无法确定表达式的整体结果,则短路布尔运算符将仅计算第二个操作数。

这意味着,如果你使用&&运算符 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();