我经常在必要时这样做以防止空指针异常:
// Example #1
if (cats != null && cats.Count > 0)
{
// Do something
}
在 #1 中,我一直假设cats != null
需要是第一位的,因为操作顺序是从左到右评估的。
但是,与示例 #1 不同,现在我想做一些事情,如果对象是null
或如果Count
是零,因此我使用逻辑 OR 而不是 AND:
// Example #2
if (table == null || table.Rows == null || table.Rows.Count <= 0)
{
// Do something
}
逻辑比较的顺序重要吗?或者我也可以颠倒顺序并获得相同的结果,例如示例#3?
// Example #3
if (table.Rows.Count <= 0 || table.Rows == null || table == null)
{
// Do something
}
(顺便说一句,我意识到我可以像下面那样重写#2,但我认为它很乱,我仍然对 OR 运算符感到好奇)
// Example #4
if (!(table != null && table.Rows != null && table.Rows.Count > 0))
{
// Do something
}