| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 897 人关注过本帖
标题:C#经典问题!!
收藏  订阅  推荐  打印 
Debugging
Rank: 1
等级:新手上路
帖子:1
积分:112
注册:2008-1-15
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-1-15 22:40
xxllbb
Rank: 1
等级:新手上路
帖子:14
积分:254
注册:2006-7-10

句柄不一样 比较的时候看你比较的是值还是句柄
如果是值就一样  如果是句柄就肯定不一样了
两个字符串创建的时候的地址是不一样的.
2008-1-15 23:43
andey
Rank: 4
等级:高级会员
威望:3
帖子:916
积分:9948
注册:2007-7-18

关键是"=="和"Eqauls"的区别...

msdn == 葵花宝典!!!
QQ:122768959
2008-1-16 09:40
peach5460
Rank: 3Rank: 3
来自:武汉
等级:中级会员
帖子:399
积分:4322
注册:2008-1-28

object的比较

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

如果写错了...不要愤青...
欢迎交流peach5460@gmail.com
QQ Group:61505403
2008-1-29 21:55
ChenMo
Rank: 12Rank: 12Rank: 12
等级:版主
威望:3
帖子:478
积分:5112
注册:2004-4-8

int a = 3;
int b = 3;
if ( a == b ){} //a、b为值类型,比较其值是否相等

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

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

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

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

fsEditor 1.0.4(beta) by ChenMo,欢迎下载测试。
http://www.bccn.net/Soft/kfyy/c/200805/3298.html
2008-2-5 15:55
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.056858 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved