关于C#.NET中IF语句顺序的简单问题
if (Company !=null && Company.ID > 0)
{
}
C#是否从左到右工作,因此对Company.ID的检查是否有效?
感谢。
答案 0 :(得分:32)
基本上,是的。
if
语句期望括号内的布尔运算符确定对下一个语句的评估。
使用&&
运算符,如果第一个布尔检查Company !=null
为false,则语句返回false,而不执行另一个(Company.ID > 0
)。
另外(供参考),使用||
运算符将在第一个语句后返回true,如果它为真且不计算第二个语句。
答案 1 :(得分:6)
MSDN:
条件AND运算符(&&)执行其bool操作数的逻辑AND,但只在必要时才计算其第二个操作数。
答案 2 :(得分:3)
&&运营商是所谓的短路运营商。它从左到右测试语句,并在其中一个测试失败后停止测试。如果您想要运行每个测试,请使用&操作
可以找到更多信息here
答案 3 :(得分:3)
是的,确实如此。您可以通过替换函数调用的条件来证明这一点:
if (myfunc() && myfunc2())
{
console.writeline("Success");
}
...
bool myfunc()
{
console.writeline("func1");
return false;
}
bool myfunc2()
{
console.writeline("func2");
return true;
}
应输出:
func1
Success
答案 4 :(得分:1)
此外,如果由于某种原因需要评估两个表达式而不是快捷方式,请使用单个“&”而不是双倍。
http://msdn.microsoft.com/en-us/library/2a723cdk(VS.80).aspx
答案 5 :(得分:0)
简答:是的
更长的答案:该形式的并将使用短路评估,因此如果公司为空则则不会执行第二次检查。