将null与对象而不是具有null的对象进行比较有什么问题

Ari*_*eem 4 c# java compiler-construction null

我刚刚发现我可以比较nullObject这样的,

if(null != Object)

而不是比较Objectnull一样

Object != null
Run Code Online (Sandbox Code Playgroud)

如果使用前一种方法可能会出错?

这合法吗?如果没有那么为什么编译器会接受它?

Sum*_*ngh 14

两者都是等价的,但这null != object是一种古老的做法,它可以有效地编写if (object = null)并且意外地将null赋给对象.这是一个阻止这次事故发生的警卫.


Joh*_*136 6

大多数人说,Object != null因为这是他们习惯的,因此更容易阅读.

我听过的最好的论据null != object是避免表达不好.例如,收拾错字if (var == 1)

if (var = 1) // this is valid C
if (1 = var) // this is not valid C
Run Code Online (Sandbox Code Playgroud)


wal*_*her 6

有一件事是错的 - 可读性.如果你想编写一个干净的代码,你应该关心它将来的阅读方式.它需要是显而易见的,它做什么以及为什么它做某件事.如果将"对象"放在评估的右侧,那么你真正在做什么就变得不那么明显了.至少在我看来......