空间差异

时间:2008-11-19 17:26:28

标签: .net

之间有什么区别
if(null==object)

if(object==null)

请使用上述内容。

7 个答案:

答案 0 :(得分:12)

如果您不小心输入=而不是==

,则会出现差异

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

答案 1 :(得分:6)

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

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

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

if(false = a) // OOPS! Compiler error
{
  // ..
}
if(null = b) // OOPS! Compiler error
{
  // ..
}

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

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

if(myString != null && myString.Equals("OtherString"))
{
  // ...
}

可以(在.NET,Java和大多数使用基于对象的字符串类型的语言)简化为:

if("OtherString".Equals(myString))
{
  // ..
}

答案 2 :(得分:4)

嗯,这是我有点像...使用扩展程序:

public static class ObjectExtensions
{
    public static bool IsNull(this object target)
    {
        return null == target;
    }
}

现在,你可以完全忘掉它:

if(item.IsNull())

答案 3 :(得分:3)

没有区别。 (null == object)是C / C ++的一种实践,其中“=”既可以用作赋值运算符,也可以用作比较运算符。

使用if(object = null)时有太多错误。

答案 4 :(得分:2)

有些人更喜欢if (null == object),因此如果您不小心输入=而不是==,则会收到编译错误而非分配。

答案 5 :(得分:2)

逻辑上,没有区别。

错误检查的角度来看,第一个是更理想的,因为如果你错过了一个等号(=),编译器会告诉你你不能做一个分配给常数。

答案 6 :(得分:0)

在许多语言中==是比较运算符=是赋值运算符。

当你真正意味着==时,很容易输入=。

因此,首选键入constant == variable的约定。

constant = variable将无法编译,因此显示您的错误。

variable = constant将编译并在运行时执行错误操作。