【发布时间】:2013-06-26 13:28:56
【问题描述】:
抱歉,我想不出更好的方法来表达我的问题,所以它可能是重复的。我提前道歉。通常我会自己测试,但我目前在无法编程的工作站上。
假设我们有以下代码
public void testFunctions()
{
if(someFunction1() && someFunction2())
{
Console.WriteLine("I will never get here.");
}
}
private bool someFunction1()
{
Console.Write("Obviously I got here");
return false;
}
private bool someFunction2()
{
Console.WriteLine(", but will I ever get here?");
return false;
}
当我调用 testFunctions 时输出会是什么?
Obviously I got here
或者:
Obviously I got here, but will I ever get here?
【问题讨论】:
-
在 C# 中,你会得到“显然我到了这里”并且永远不会达到第二个条件。这就是为什么如果您需要检查空值,您首先要执行此操作。但是,并非所有语言都如此。例如,Javascript 将同时运行这两种条件。
-
Javascript 会同时运行这两种情况吗?我对此表示高度怀疑。也许它甚至依赖于 js 引擎,但至少在 chrome(v8 引擎)中,如果第一个计算结果为 false,它确实
not在&&表达式中运行这两个函数。 -
此外,据我所知,在 javascript 中它与在 C# 中完全相同 - 您也可以使用
&运算符来始终运行表达式的两侧。
标签: c# if-statement unreachable-code