语句是有之间的差异:有在两个区别,如果在C#
if (myObject != null && myObject.someint == 0)
{
// do something
}
和
我一直认为它评估的首要条件,而如果为假,它跳过第二个评价。但是,我在运行时引用了空引用错误。 myObject
为空,它试图检查myObject.someint
该对象可以在外部修改,当它检查对象存在的第一个条件时,但是当它进入下一个条件时,在myObject中?
如果它是后者,任何方法来避免(在我的脑海中b/c上述两种方法做if检查都是一样的)。只有我可以想象的是try/catch
避免更好的方法:不要修改外部对象而不锁定。如果你可以描述在执行任何一条if语句时'myObject'可以设置为null的方式,那么你就有一个竞争条件,很简单。 – 2012-02-04 04:55:16