我发现我可以将null
与此类Object
进行比较,
if(null != Object)
而不是将Object
与null
进行比较,例如
Object != null
如果使用前一种方法可能会出现什么问题?
这合法吗?如果没有,那么编译器为什么接受它呢?
答案 0 :(得分:14)
两者都是等价的,但null != object
是一种古老的做法,它可以有效地写if (object = null)
并且意外
将null赋给对象。这是一个阻止这次事故发生的警卫。
答案 1 :(得分:6)
大多数人都说Object != null
,因为这是他们习惯的,因此更容易阅读。
我听过null != object
的最好的论点是避免表达不好。例如在if (var == 1)
if (var = 1) // this is valid C
if (1 = var) // this is not valid C
答案 2 :(得分:6)
有一件事是错的 - 可读性。如果你想编写一个干净的代码,你应该关心它将来的阅读方式。它需要是显而易见的,它做什么以及为什么它做某件事。如果将“对象”放在评估的右侧,那么你真正在做什么就变得不那么明显了。至少在我看来......
答案 3 :(得分:2)
这只是一个可读性的问题。如果你可以大声读出你的代码,那就更容易理解了。第二个版本就像Yoda-talk ..“null不是对象..”比较“对象不为空”..
这同样适用于为变量和方法提供良好的名称。
用于编写可读代码的良好参考站点:http://www.cleancoders.com/
答案 4 :(得分:0)
它是一样的。这几乎就像说1 != 2
。这是否意味着2 != 1
?
答案 5 :(得分:0)
!=
运算符的行为与对等运算符==
的测试相同。
忽略表达式中的任何副作用(expr1 != expr2
)和(expr2 != expr1
)完全相同。
如果对象是变量(或常量),则(null != Object
)同样有效(尽管可读性稍差)。