数码控科技猎奇Iphone动漫星座游戏电竞lolcosplay王者荣耀攻略allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类全部分类技术牛文全部分类教程最新网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销开发数据库服务器系统虚拟化云计算嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

null==和==null这两种写法有区别吗?-CSDN论坛

来源:互联网  责任编辑:小易  时间:2018/1/19 19:35:43
本网有用户碰到这样的问题:null==和==null这两种写法有区别吗?-CSDN论坛,具体问题如下:

本网根据需求用户需求,为用户寻得以下其他网友提供的解决方法,方法仅供参考,具体如下:

解决方案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 © 2017 www.zgxue.com All Rights Reserved