我想知道当程序处理具有多个条件的if结构时会发生什么.我有个主意,但我不确定.我举个例子:
List<string> myTestList = null;
if (myTestList != null && myTestList.Count > 0)
{
//process
}
Run Code Online (Sandbox Code Playgroud)
该列表为空.处理if语句时,只要一个条件为假,它是否会从左到右退出if?
我已经尝试过,似乎没有错误,所以我假设上面解释了它,但我不确定.
Mar*_*ell 25
这&&是重要的.这是短路的,因此Count永远不会被评估; 条件从左到右评估.
还有一个非短路运营商(&),但它是非常罕见的在看,如果试验; 它主要用于按位运算(int等).
从规格:
条件逻辑运算符
在
&&与||运营商被称为条件逻辑运算符.它们也被称为"短路"逻辑运算符....
在
&&和||运营商都是有条件的版本&和|运营商:
- 该操作
x && y对应于操作x & y,除非y仅在x不进行评估时进行评估false.- 该操作
x || y对应于操作x | y,除非y仅在x不进行评估时进行评估true.
在大多数(但不是全部)现代语言中,有一个称为"短路布尔评估"的功能.这意味着如果&&条件的第一部分为假,则根本不评估第二部分.
类似的特征适用于||,如果第一部分为真,则不评估第二部分.
请注意,此功能不仅限于if语句.以下内容也有效,Count如果myTestList是,则不会尝试引用null:
bool b = myTestList != null && myTestList.Count > 0;
Run Code Online (Sandbox Code Playgroud)