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的值不一起变

解决方案 »

  1.   

    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个对象在堆上的内存地址。
      

  2.   

    不好意思Equs写错了,应该是Equals