我有以下的OR运算符,现在如果c为空,错误视图将被返回,并且在第二次检查(!c.ManagedBy ...)时不会引发null异常;但是这只会在编译器在(!c.Ismanaged ..)检查之前执行(c == null)检查时才会发生。或运算符的序列
Book c = elearningrepository.GetBook(id);
if ((c == null) || (!c.IsManagedBy(User.Identity.Name)))
{
return View("Error");
}
,所以我可以保证的是,编译器总是空检查首先进行的C ==或最好是上述检查分成两个单独的if语句来明确执行顺序。 BR
@MagnusHoff:真;已编辑。 – 2012-01-30 16:20:44