见线程标题。我可以安全地做这样的事情而不用担心NullReferenceException
,或者不能保证从左到右评估那些布尔表达式吗?
// can this throw an NRE?
if (obj == null || obj.property == value)
{
// do something
}
答案 0 :(得分:21)
他们将从左到右进行评估,保证。是的,它的安全。
条件OR运算符(||) 执行其bool的逻辑或 操作数,但只评估它 第二个操作数,如有必要。
http://msdn.microsoft.com/en-us/library/6373h346%28VS.71%29.aspx
答案 1 :(得分:1)
这样做非常安全。如果左边的第一个表达式为true,则不评估其余表达式。
答案 2 :(得分:1)