null==和==null这两种写法有区别吗?

来源:互联网  责任编辑:小易  时间:2017/1/12 18:59:22
用户提出问题:null==和==null这两种写法有区别吗?,具体如下:

通过互联网整理获得以下解决方法:

=================1楼=====================

int a=1;

a==1;
1==a;

=================2楼=====================

没什么区别,只是编写代码习惯不同而已
推荐使用null==,这样可以防止写代码时笔误把==写成了=而没有检查出来。

=================3楼=====================

引用 2 楼 Chinajiyong 的回复:
没什么区别,只是编写代码习惯不同而已
推荐使用null==,这样可以防止写代码时笔误把==写成了=而没有检查出来。

原来是防笔误,学到了

=================4楼=====================

引用 3 楼 bineifeilie18 的回复:
Quote: 引用 2 楼 Chinajiyong 的回复:

没什么区别,只是编写代码习惯不同而已
推荐使用null==,这样可以防止写代码时笔误把==写成了=而没有检查出来。

原来是防笔误,学到了

在C#中 不会纯在笔误问题 因为 在if()或者 While() 括号中必须是 布尔类型
可以在其他语言中 比如 C 中就不一样了 if() 或者 while() 中没有硬性的规定必须是一个bool类型
而他们的判断规则是 0表示false 非0表示true 所以 if可以这样写 if(1) if(变量名) 
如果 笔误写成了这样
int a = 100;
if(a = null) 那么里面编程了赋值 那么a就变成0了 那么条件就变成了 false

=================5楼=====================

引用 4 楼 crystal_lz 的回复:
Quote: 引用 3 楼 bineifeilie18 的回复:

Quote: 引用 2 楼 Chinajiyong 的回复:

没什么区别,只是编写代码习惯不同而已
推荐使用null==,这样可以防止写代码时笔误把==写成了=而没有检查出来。

原来是防笔误,学到了

在C#中 不会纯在笔误问题 因为 在if()或者 While() 括号中必须是 布尔类型
可以在其他语言中 比如 C 中就不一样了 if() 或者 while() 中没有硬性的规定必须是一个bool类型
而他们的判断规则是 0表示false 非0表示true 所以 if可以这样写 if(1) if(变量名) 
如果 笔误写成了这样
int a = 100;
if(a = null) 那么里面编程了赋值 那么a就变成0了 那么条件就变成了 false
很有道理,原来没想到这方面的原因,思路不够宽

=================6楼=====================

null==a是以前C语言的写法,因为C允许if(a=null)这种判断,但这个其实是少写了个=
所以c开发的人员为了避免这问题,就出现了null==a的写法,因为这样一旦漏写了个=号,编译器就会编译不通过
但这在Java和c#这种面向对象的语言里面是不需要的,因为少个=号,不管java还是C#都是编译错误

=================7楼=====================

引用 4 楼 crystal_lz 的回复:
Quote: 引用 3 楼 bineifeilie18 的回复:

Quote: 引用 2 楼 Chinajiyong 的回复:

没什么区别,只是编写代码习惯不同而已
推荐使用null==,这样可以防止写代码时笔误把==写成了=而没有检查出来。

原来是防笔误,学到了

在C#中 不会纯在笔误问题 因为 在if()或者 While() 括号中必须是 布尔类型
可以在其他语言中 比如 C 中就不一样了 if() 或者 while() 中没有硬性的规定必须是一个bool类型
而他们的判断规则是 0表示false 非0表示true 所以 if可以这样写 if(1) if(变量名) 
如果 笔误写成了这样
int a = 100;
if(a = null) 那么里面编程了赋值 那么a就变成0了 那么条件就变成了 false


别说得那么绝对啊
举个栗子:
class A
{
public static implicit operator bool(A a)
{
return a == null;
}
}

A a;
if(a = null)
Console.WriteLine("a is null");

=================8楼=====================

Quote: 引用 7 楼 shingoscar 的回复:


别说得那么绝对啊
举个栗子:
class A
{
public static implicit operator bool(A a)
{
return a == null;
}
}

A a;
if(a = null)
Console.WriteLine("a is null");

我擦 骚年 你这是作弊。。。。。
以前也有一个朋友砸我场子 现在坟头草不知道多高了。。。

=================9楼=====================

引用 7 楼 shingoscar 的回复:
别说得那么绝对啊
举个栗子:
class A
{
public static implicit operator bool(A a)
{
return a == null;
}
}

A a;
if(a = null)
Console.WriteLine("a is null");

=================10楼=====================

引用 3 楼 bineifeilie18 的回复:
Quote: 引用 2 楼 Chinajiyong 的回复:

没什么区别,只是编写代码习惯不同而已
推荐使用null==,这样可以防止写代码时笔误把==写成了=而没有检查出来。

原来是防笔误,学到了


我倒是不推荐 null == ,只有一个原因,可读性,这不符合人的思维习惯。
我认为好的代码读起来就像伪代码,它能言简意赅的描述业务逻辑。跟我们说话的语言语意越一致,就越简洁越容易维护。

=================11楼=====================

引用 8 楼 crystal_lz 的回复:
我擦 骚年 你这是作弊。。。。。
以前也有一个朋友砸我场子 现在坟头草不知道多高了。。。

啊,不好意思就当没看见吧。。。

=================12楼=====================

早期 防止写成=null 才写null==
现在绝大多数的IDE都能检查出来并给出警告提示,所以现在写null==可读性差 好处没见到

=================13楼=====================

引用 10 楼 daixf_csdn 的回复:
Quote: 引用 3 楼 bineifeilie18 的回复:

Quote: 引用 2 楼 Chinajiyong 的回复:

没什么区别,只是编写代码习惯不同而已
推荐使用null==,这样可以防止写代码时笔误把==写成了=而没有检查出来。

原来是防笔误,学到了


我倒是不推荐 null == ,只有一个原因,可读性,这不符合人的思维习惯。
我认为好的代码读起来就像伪代码,它能言简意赅的描述业务逻辑。跟我们说话的语言语意越一致,就越简洁越容易维护。

IDE检错,还是选择==null可读性更高

=================14楼=====================

引用 2 楼 Chinajiyong 的回复:
没什么区别,只是编写代码习惯不同而已
推荐使用null==,这样可以防止写代码时笔误把==写成了=而没有检查出来。
厉害,这我倒是从来没想到过

=================15楼=====================

引用 8 楼 crystal_lz 的回复:
Quote: 引用 7 楼 shingoscar 的回复:


别说得那么绝对啊
举个栗子:
class A
{
public static implicit operator bool(A a)
{
return a == null;
}
}

A a;
if(a = null)
Console.WriteLine("a is null");

我擦 骚年 你这是作弊。。。。。
以前也有一个朋友砸我场子 现在坟头草不知道多高了。。。


我表示我下载了你那个识别验证码的项目,结果……

=================16楼=====================

诸如js中就可以 If( a=null )这样就会出问题。
不过对于c#在vs编译器中,无所谓null==a还是 a==null
我习惯a==null

=================17楼=====================

引用 6 楼 starfd 的回复:
null==a是以前C语言的写法,因为C允许if(a=null)这种判断,但这个其实是少写了个=
所以c开发的人员为了避免这问题,就出现了null==a的写法,因为这样一旦漏写了个=号,编译器就会编译不通过
但这在Java和c#这种面向对象的语言里面是不需要的,因为少个=号,不管java还是C#都是编译错误

原来如此,小弟真的是孤陋寡闻了

如果您还有更好的解决方法,请在最下面评论中留下您的解决方法


  • 本文相关:
  • 站长必读,如何真正写好一篇原创文章
  • 互联网之路细嗅蔷薇 资深站长分享掘金之道
  • 企业站的站长的工作重心究竟有哪些
  • 浅析:行业门户网站的一些盈利模式
  • 3000IP的企业网站每天订单不到30个的苦恼
  • 网站想内外兼修?先学习提高网站可用性的6大原则
  • 浅谈网页设计中的简约之美
  • 网页改版实战:日本设计师如何彻底优化旅游网站?
  • 网页改版实战!日本设计师如何彻底优化招聘网站?
  • 2015年值得关注的21个网页设计趋势
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2015 www.zgxue.com All Rights Reserved