NET问答:null != variable 和 variable != null 到底有什么区别?

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NET问答:null != variable 和 variable != null 到底有什么区别?相关的知识,希望对你有一定的参考价值。

咨询区

  • mr_georg

在 C# 中,下面的两种写法在执行效率上是否存在差异?


if (null != variable) ...
if (variable != null) ...

因为最近我经常看到这种非自然的写法 null != variable,这让我感到很好奇,因为我觉得第二种写法更符合人的阅读习惯。

如果两者没有差异的话?为什么会存在这种非常规的写法?仅仅是因为个人爱好吗?

回答区

  • Jon Skeet

这是 C 语言的遗留问题,如果你的编译器档次不高或者你没有开启高级别的告警配置,那下面的代码不会出现什么任何警告信息,虽然这段代码也是正确的代码。


// Probably wrong
if (x = 5)

其实你真正想表达的意思是这样:


if (x == 5)

为了避免这种不小心造成的低级错误,所以就有了变通的写法。


if (5 == x)

回过头来说,如果在 C# 中还是这么玩的话,那就有点聪明反被聪明误了,你应该写出更可读性的代码,因为 C# 中的 if 必须是 boolean 表达式。

  • Lasse V. Karlsen

我猜这是一位 C 转过去的程序员,在 C 语言中,可以写出下面的语句。


int i = 0;
if (i = 1)
{
    ...
}

上面这种写法的意思是:将 1 赋值给 i,然后返回变量i,又因为在 if 表达式条件中,这里的 1 会被当作 true 处理,严谨一点说:其实这是一个bug。

在 C# 中还这么写,编译器肯定放不过,所以本质上来说两者没有区别。

点评区

C 中可以这么写我不知道,但 javascript 中经常见到,没啥好说的,学习了!

以上是关于NET问答:null != variable 和 variable != null 到底有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

variable = null as “对象破坏”从何而来?

NET问答: 为什么 IEnumerable<string; 不能被初始化?

js判断为空Null与字符串为空简写方法

Clear-Variable 和将变量设置为 NULL 之间的区别

PHP - 将特定的 $variable 设置为 NULL

程序员级别鉴定书(.NET面试问答集锦)