引用类型的问题
object 和 string类型都是引用类型,为什么
object a,b;
a=1;b=1;
Console.WriteLine(a==b);
string c,d;
c='hh";d="hh";
Consoe.WriteLine(c==d);
显示:
false
true
还有
object t=3;
object s=t;
t=6;
Consoe.WriteLine(t==s);
显示
false
为什么 s和t的值不一起变
问题点数:20、回复次数:5Top
1 楼Samen168(Code to coding)回复于 2006-03-07 10:34:37 得分 20
装箱,拆箱的结果,hohoTop
2 楼balibaba(bali)回复于 2006-03-07 22:48:18 得分 0
rrTop
3 楼SunOnNET()回复于 2006-03-07 23:08:57 得分 0
object a,b;
a=1;b=1;
Console.WriteLine(a==b);
string c,d;
c='hh";d="hh";
Consoe.WriteLine(c==d);
显示:
false
true
因为object判等比较的是2个对象在内存中的地址,所以两个不相等。而string对象重写了ojbect
中的方法Equs方法,自己提供了比较两个对象的方法所以是相等的,我们自己写的类一般都需要重写Equs方法
——-----------------------------------------------------
object t=3;
object s=t;
t=6;
Consoe.WriteLine(t==s);
显示
false
为什么 s和t的值不一起变
和第一题的解释是一样的因为object的==比较是调用其Equs方法,该方法是比较2个对象在堆上的内存地址。
Top
4 楼ThreadSharp(ThreadSharp V2006)回复于 2006-03-08 08:51:17 得分 0
昨天不是已经开过贴了吗,而且俺也具体的给你了解释,回去看看那个吧。Top
5 楼SunOnNET()回复于 2006-03-08 10:52:11 得分 0
不好意思Equs写错了,应该是EqualsTop




