之间有什么区别
if(null==object)
和
if(object==null)
请使用上述内容。
答案 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将编译并在运行时执行错误操作。