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

来源:互联网  责任编辑:小易  时间:2017/5/26 22:59:29
本网有用户碰到这样的问题: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#都是编译错误

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

=================18楼=====================

#6,C中拉下一个等号,应该可以编译通过吧!

=================19楼=====================

引用 18 楼 daigualu 的回复:
#6,C中拉下一个等号,应该可以编译通过吧!

谁告诉你的?试过没有?

=================20楼=====================

c# 优雅,一般来说不会有 =null 的 bug。

所以写成 ==null 也是清晰有效、省力的。

=================21楼=====================

虽然知道这个典故,不过还是不喜欢这种写法

=================22楼=====================

我喜欢在后面...不喜欢在前面..

比如 我炒鸡不喜欢


if(5==i)
{

}


我看到这代码  擦了 不行了要死了 快来救我 简直是double b

=================23楼=====================

在 c# 程序中,如果你写

if(x=null)根本编译不通过,所以你应该懂得,那些强调 null== 写法的人是“混哪里的”了

=================24楼=====================

好热闹

=================25楼=====================

null== 这样写可以装逼啊!

=================26楼=====================

null == 写法对于其它某些“语言”当然是有现实意义的。因为他们的程序员很难直接分清楚

if(x=5)和if(x==5)代码,编译器不给力,所以才会有那个说法!


所以,什么概念都是相对的,有环境的。

=================27楼=====================

哦,#4楼#6楼已经说明过了。

所以说要理解背景,不胡乱求新、求“装”。

=================28楼=====================

现在才明白为何要这样写,学习了。

=================29楼=====================

=================30楼=====================

没记错的话,Java有区别,但对于.NET,没有。。。

=================31楼=====================


int i=10;
while(i-->0)
{
}


刚开始时我还以为-->是一个新的符号呢

=================32楼=====================

好久不来,混的脸熟。

=================33楼=====================

引用 19 楼 yenange 的回复:
Quote: 引用 18 楼 daigualu 的回复:

#6,C中拉下一个等号,应该可以编译通过吧!

谁告诉你的?试过没有?

C中的确是可以的,比如if(a=5) 结果a赋值为5,并且if条件永远成立

=================34楼=====================

没区别,习惯而已。

=================35楼=====================

传说中的代码强近症

=================36楼=====================

引用 33 楼 daigualu 的回复:
Quote: 引用 19 楼 yenange 的回复:

Quote: 引用 18 楼 daigualu 的回复:

#6,C中拉下一个等号,应该可以编译通过吧!

谁告诉你的?试过没有?

C中的确是可以的,比如if(a=5) 结果a赋值为5,并且if条件永远成立

他说的是C#, 不是C

=================37楼=====================

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


但对 Boolean 类型的变量还是存在漏洞的,但只有Java有

Boolean a = true;
if(a = null) System.out.println("嘿嘿!");


而C#则会编译不过

bool? a = true;
if(a = null) Console.WriteLine("嘿嘿!");

=================38楼=====================

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

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

原来是防笔误,学到了

跟防笔误有什么关系?哪来的防笔误概念?
==就是比较左右俩个数据是否相同,谁左谁右有什么区别

=================39楼=====================

引用 15 楼 closurer 的回复:
我表示我下载了你那个识别验证码的项目,结果……

结果咋啦?。。。。

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


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