string="hello";
string b="h";
//追加的内容到b中
b+="ello";
Console.WriteLine(a==b);//将输出true
Console.WriteLine((object)a==(object)b);//将输出flase 为什么这里是flase 

解决方案 »

  1.   

    字符串是值比较,所以a==b为true
    (object)a==(object)b 而这里把字符串强转为object,就变成引用比较,所以为false.
      

  2.   

    这你就要理解值和对象的区别了.a==b是比较值.而(object)a==(object)b比较的是对象.
      

  3.   

    错了...==号不是比较值,值类型才比较值,引用类型比较的是引用对象...这个问题是因为string是一种特殊的引用类型...1楼对的...
      

  4.   

    字符串也是引用类型并且继承至object。
    但是字符串重载了比较操作符==,重载后的比较操作符==被改写成比较串的值,而没有经过重载的原始的object的比较操作符==比较的是两个实例的地址。
    而强制转换成object,调用的是没有经过重载的比较操作符==