如果if结构的第一部分是假的,会发生什么?

Ter*_*rry 13 c# if-statement

我想知道当程序处理具有多个条件的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.


Gre*_*ill 6

在大多数(但不是全部)现代语言中,有一个称为"短路布尔评估"的功能.这意味着如果&&条件的第一部分为假,则根本不评估第二部分.

类似的特征适用于||,如果第一部分为真,则不评估第二部分.

请注意,此功能不仅限于if语句.以下内容也有效,Count如果myTestList是,则不会尝试引用null:

bool b = myTestList != null && myTestList.Count > 0;
Run Code Online (Sandbox Code Playgroud)