标题:C#经典问题!!
只看楼主
Debugging
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-1-15
 问题点数:0 回复次数:4 
C#经典问题!!
String a ="1234";
String c = "123"; c+="4";

Console.WriteLine((object)a==(object)c);     //False
Console.WriteLine((object)a.Equals((object)c)); //True
Console.WriteLine(a==c); //True
Console.WriteLine(a.Equals(c)); //True

有谁详细解释一下四个bool值为什么是这样的原因
搜索更多相关主题的帖子: object Console WriteLine 经典 True 
2008-01-15 22:40
xxllbb
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-7-10
得分:0 
句柄不一样 比较的时候看你比较的是值还是句柄
如果是值就一样  如果是句柄就肯定不一样了
两个字符串创建的时候的地址是不一样的.
2008-01-15 23:43
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
得分:0 
关键是"=="和"Eqauls"的区别...

msdn == 葵花宝典!!!
QQ:122768959
2008-01-16 09:40
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
object的比较

==两边是object的时候比较的是地址值
因为a和c不是一个对象,地址肯定不一样,所以==为假
eqauls是比较对象的内容所以真咯

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2008-01-29 21:55
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
得分:0 
int a = 3;
int b = 3;
if ( a == b ){} //a、b为值类型,比较其值是否相等

object c = (object)a; //装箱
object d = (object)b; //装箱

if ( c == d ){}  //c、d为引用类型,比较其哈希码是否相等来判断是否为同一对象。

字符串本是隶属引用类型,但是看似比较特殊…
作用于字符串的操作符可能是被重载过或被特殊处理,仅属猜测,如有深究者可对此考究一番。

[[it] 本帖最后由 ChenMo 于 2008-2-5 15:59 编辑 [/it]]

欢迎加入 MVC 技术讨论群(新群:90093426)
2008-02-05 15:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-197584-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013090 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved