namespace ConsoleApplication2{
   
    class Program{
        static void Main(string[] args){
            int i = 123;            object a1 = i;
            object a2 = (object)i;
            
            int j = (int)a1;            Console.WriteLine(a1==a2);
            Console.WriteLine(j == i);            Console.ReadKey();
        }
    }
}执行这段代码后,为什么分别输出的是False和True?
而我看的是True啊和False.

解决方案 »

  1.   

    因为整数重载了 == 运算。
    a1 == a2 比较的是两个对象是不是同一个,显然不是。
    j == i 比较的是他们的值是否相等,所以为 true。
      

  2.   

    String.Equals();方法被用来检测两个对象是否相等,即两个对象的内容是否相等。
    ==用于比较引用和比较基本数据类型时具有不同的功能:
    比较基本数据类型,如果两个值相同,则结果为true 
    int ia = 5;
    int ib = 5; 
    object oa = ia;  //装箱
    object ob = ib;
    Console.WriteLine(oa == ob); // 结果是 false!!!
      

  3.   

    原来是这样,我还没有看到重载这一篇。
    所以我以为 == 就只是比较值。
    而在a1 == a2 时,比较的是对象。而不是值。
    而i ==j的时候,比较的是值。
    所以输出的就是False和True.
    是这样的吧。