短路運算子
根據定義,如果第一個運算元無法確定表示式的整體結果,則短路布林運算子將僅計算第二個運算元。
這意味著,如果你使用&&運算子 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();