关于在判断条件中定值在前在后的问题

yingzhilian2008 2009-04-28 09:58:34
判断条件中
例如if(对象!=null) 和if(null!=对象)
if(txtBox.Text.equals(""))和if("".equals(txtBox.Text))这些到底有什么区别,
那种写法比较好,
为什么要这样写,
能避免什么问题!
望达人们帮忙!
...全文
196 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wartim 2009-04-28
  • 打赏
  • 举报
回复
虽然很多书里都写
if(null!=对象)
但我喜欢用
if(对象!=null)
这个比较符合自然思维,上面那个太古怪了,完全的程序员思维也不好
ceamky 2009-04-28
  • 打赏
  • 举报
回复
个人认为就是防止==和=的误写。
以及值类型和引用类型的相等比较。
请高手解答。
学习中……
我姓区不姓区 2009-04-28
  • 打赏
  • 举报
回复
至于调用Equals方法的时候,就要先判断调用这个方法的对象是否为空了,如果为空,则会报“未将对象引用设置到对象实例”的错误
我姓区不姓区 2009-04-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ericzhangbo1982111 的回复:]
例如if(对象!=null) 和if(null!=对象)

if(null!=对象) 比较是正确的

因为用if(对象!=null) 比较的话。你的对象可能是null的
所以也是就说你的比较可能是这样的
if(null!=null)
所以会出错。



[/Quote]

不可能会出错的,这里!=运算符比较左右两个操作数,看它们是否引用相等,而没有调用对象的任何成员
所以==和!=两边的操作数放在哪边是一样的
yingzhilian2008 2009-04-28
  • 打赏
  • 举报
回复
这里有人说是if(null!=对象)写法比较好一点
而且很多高人写的例子也是用的这种形式
我就是不知道能避免什么!
jiyan1221 2009-04-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 yingzhilian2008 的帖子:]
判断条件中
例如if(对象!=null) 和if(null!=对象)
if(txtBox.Text.equals(""))和if("".equals(txtBox.Text))这些到底有什么区别,
那种写法比较好,
为什么要这样写,
能避免什么问题!
望达人们帮忙!
[/Quote]
剛剛試了一下,沒什么區別,可以通用的
ericzhangbo1982111 2009-04-28
  • 打赏
  • 举报
回复
在java里面 null比较会出错。

c#里面不会
但这样就可能出错。
if(txtBox.Text.equals(""))


txtBox.Text==null
而null是不可能操作的。
所以
txtBox.Text.equals会出错。

表达式是没有错误的
就是多了一些考虑而已。
ztenv 2009-04-28
  • 打赏
  • 举报
回复
null!=object///是C的风格,
waterspace 2009-04-28
  • 打赏
  • 举报
回复
if(对象!=null) 和if(null!=对象) 没有区别吧.本来是C和C++里为了防止把==错写成=用的

equals可以防止参数为null
if("".equals(a))
等于 if (a != null && a.equals(""))
hm020 2009-04-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ericzhangbo1982111 的回复:]
例如if(对象!=null) 和if(null!=对象)

if(null!=对象) 比较是正确的

因为用if(对象!=null) 比较的话。你的对象可能是null的
所以也是就说你的比较可能是这样的
if(null!=null)
所以会出错。



[/Quote]

那按你所说 对象可能是NULL时, 不也是 if(null != null<对象>)
Garnett_KG 2009-04-28
  • 打赏
  • 举报
回复
将变量写在前面, 可能是出於怕出bug的原因吧. 有时候 == 总是会不自觉的写成 = ,这个bug在C里面可是很难查的

不过C#的IDE比较牛b,会自动提示。
yangqidong 2009-04-28
  • 打赏
  • 举报
回复
如果是这种情况
bool b1 = false;
if(b1==true) 和 if(true==b1)
相比,第二种比较好,因为用户可能漏掉一个=号,此时第二种编译器无法通过编译,
而第一种可以通过编译,这样你无法在编译时找到错误了
zealot1021 2009-04-28
  • 打赏
  • 举报
回复
if(对象!=null) 和if(null!=对象)
应该是一样的吧,不过这样比较只能比较它们指向的内存是否相同
不能比较它们的值是否相等,equals也是一样,都是比较指向的位置
我一般比较字符串的话用compareTo,
if(txtName.Text.trim().compareTo("张三")==0)
{
==0代表相同
}
hm020 2009-04-28
  • 打赏
  • 举报
回复
学疏才浅,个人认为没什么区别.

望高手解答
yangqidong 2009-04-28
  • 打赏
  • 举报
回复
在C#里面没有区别
ericzhangbo1982111 2009-04-28
  • 打赏
  • 举报
回复
if(txtBox.Text.equals(""))和if("".equals(txtBox.Text))
是一样的道理


这你可以看看编程开发规范。
ericzhangbo1982111 2009-04-28
  • 打赏
  • 举报
回复
例如if(对象!=null) 和if(null!=对象)

if(null!=对象) 比较是正确的

因为用if(对象!=null) 比较的话。你的对象可能是null的
所以也是就说你的比较可能是这样的
if(null!=null)
所以会出错。



和光数智 2009-04-28
  • 打赏
  • 举报
回复
绑定 同等答案
yingzhilian2008 2009-04-28
  • 打赏
  • 举报
回复
没有人回答了嘛!
zzxap 2009-04-28
  • 打赏
  • 举报
回复
对象!=null
加载更多回复(2)

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧