有两个string类型的变量str1和str2,str1==str2,可是为什么(object)str1!=(object)str2?

解决方案 »

  1.   

    (object)str1!=(object)str2 我觉得像是在比较两个string的地址。因为string是引用类型。而str1 != str2比较的是两个字符串的内容是否相等。
      

  2.   

    对不起,我试了一下,和我预想的不一样。我也搞不清(object)str1!=(object)str2在比较什么了。还是请高手回答吧。
      

  3.   

    == 和 != 操作这两个运算符是跟 Equals()方法挂钩的.string重写了Object的Equals()方法,string.Equals()首先判断是否指向同一个地址,如果是,则返回true,如果不是,再判断是否含有相同的字符值,如果是,返回true,如果不是返回false.而object的Equals()方法则只是判断是否指向相同的地址.上面的例子中,2个字符串如果有相同的字符集却在不同的地址,是会出这个结果的.
      

  4.   


                      string a = "abc";
    string b = "abc";

    if((object)a != (object)b)
    {
        Console.WriteLine("内容同,地址不同");
    }
    else
    {
        Console.WriteLine("地址应该不同啊");
    }不过,代码输出的还是:“地址应该不同啊"