C# 语言短路运算符

示例

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

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