两者之间有区别吗:
if (myObject != null && myObject.someint == 0)
{
// do something
}
和
if (myObject != null)
{
if (myObject.someint == 0)
{
// do something
}
}
我一直认为它会评估第一个条件,如果为假,它会跳过第二个条件的评估。但是我在空引用运行时遇到错误。 myObject
为 null,它正在尝试检查 myObject.someint
该对象可以从外部修改,是否是这样的情况:当它检查第一个条件时对象存在,但当它继续到下一个条件时,某些东西杀死了 myObject 中的引用?
如果是后者,有什么方法可以避免(b/c 在我看来,上述两种进行 if 检查的方法都是相同的)。我能想象的唯一可能是try/catch
最佳答案
这一定是后一个条件,因为 && 在 false
上短路。使用
lock(myObject)
关于c# - c# 中的两个 if 语句有区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9138517/