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; 不能被初始化?