string a="abc";
            string b = "abc";
            Console.WriteLine(a == b);                   //第一行
            Console.WriteLine((object)a==b);             //第二行
            Console.WriteLine((object)a == (object)b);   //第三行
            Console.WriteLine("____________");
            
            object c = "abc";
            object d = "abc";
            Console.WriteLine(c == d);                  //第四行
            Console.WriteLine("____________");
            
            int e = 1;
            int f = 1;
            Console.WriteLine(e == f);                   //第五行
            Console.WriteLine((object)e == (object)f);   //第六行
            Console.Read();输出结果是:
True
True
True
____________
True
____________
True
False
什么时候是对象比较什么时候是值比较啊..!?!?    分不清楚啊 ...为什么
Console.WriteLine((object)a == (object)b);   //第三行
Console.WriteLine((object)e == (object)f);   //第六行
 结果不一样啊 ,..!?为什么不能Console.WriteLine((object)e == f);这样写啊..!?!?
好迷茫.. 还望高手指教 ..

解决方案 »

  1.   

    引用类型==比较的是引用,值类型==比较的是值
    由于string对==运算符重载过,所以比较的是值
    值类型装箱后就成了引用类型,所以比较的是引用
      

  2.   

    ==操作比较的是两个变量的值是否相等。
    equals()方法比较的是两个对象的内容是否一致.
    equals也就是比较引用类型是否是对同一个对象的引用。对象比较
      

  3.   

    运算符重载,就是对==运算符重新写逻辑
    string是引用类型,如果不重载==的话,比较的应该是引用,重载之后就是比较值了