空间差异

6 .net

有什么区别

if(null==object)
Run Code Online (Sandbox Code Playgroud)

if(object==null)
Run Code Online (Sandbox Code Playgroud)

请使用上述优点.

Gre*_*reg 12

如果您不小心键入=而不是==:

if (null = object)- 编译错误
if (object = null)- 错误!


小智 6

在过去的好时光,编译器很乐意让你在条件内进行任务,导致无意的错误:

if(a = false)
{
  // I'll never execute
}
if(b = null)
{
  // I'll never execute 
}
b.Method(); // And now I'm null!
Run Code Online (Sandbox Code Playgroud)

因此,一些聪明的开发人员开始将他们的常量放在他们的条件中:

if(false = a) // OOPS! Compiler error
{
  // ..
}
if(null = b) // OOPS! Compiler error
{
  // ..
}
Run Code Online (Sandbox Code Playgroud)

所以他们训练自己避免了一整类错误.大多数现代编译器将不再让你犯这个错误,但这种做法仍在继续.

始终将常量放在第一位还有另一个好处:

if(myString != null && myString.Equals("OtherString"))
{
  // ...
}
Run Code Online (Sandbox Code Playgroud)

can(在.NET,Java和大多数具有基于对象的字符串类型的语言)被简化为:

if("OtherString".Equals(myString))
{
  // ..
}
Run Code Online (Sandbox Code Playgroud)