【发布时间】:2014-11-11 19:28:39
【问题描述】:
我想知道当程序处理具有多个条件的 if 结构时会发生什么。我有一个想法,但我不确定。我举个例子:
List<string> myTestList = null;
if (myTestList != null && myTestList.Count > 0)
{
//process
}
列表为空。处理 if 语句时,是否会从左向右退出 if 一个条件为假?
我已经尝试过了,似乎没有抛出任何错误,所以我假设上面解释了它,但我不确定。
【问题讨论】:
-
当您添加
else子句时,您看到发生了什么? -
它被调用了,这就是为什么我认为一旦条件为假 if 就会崩溃
-
“崩溃”? “崩溃”是什么意思?
-
崩溃我的意思是逃跑/退出/离开结构
-
如前所述,这是“短路评估”。我想补充一点,这是“懒惰评估”的一个特例。非惰性 Java 以外的其他语言(例如 Haskell)比仅对布尔表达式进行更多的优化。不幸的是,许多开发人员甚至教师和讲师都知道惰性求值,但在这种特殊情况下,当涉及到布尔表达式时,他们不知道或不提及短路求值。但是这里的所有专业人士和书呆子都立即给了你正确的提示;-)
标签: c# if-statement