bool b=(object)1==(object)1;
bool b2=(object)"a"==(object)"a";
bool b3=((object)1).Equals((object)1);
请问b,b2,b3的值,为什么?

解决方案 »

  1.   

    false
    true
    true估计ZL不理解的是第一个吧?第一个是两个对象,用==当然是false了!
      

  2.   

    相反,我不理解的是后面两个。后面两个不也是比对象吗,为什么是true?
      

  3.   

    false
    true
    trueC#对值类型进行装箱操作时,必须分配并构造一个全新的对象,并将该对象的引用指向该值的一个副本,(object)1==(object)1 相当于两个不同的对象比较
    (object)"a"==(object)"a"; 字符本来就是引用类型,这种只不过是进行显示装箱
    个人认为和 "a"=="a" 差不多,所以是相同的
    ((object)1).Equals((object)1);Equals方法是指两个对象的实例是否相等
    所以是相等的
      

  4.   

    false
    true
    truebool b=(object)1==(object)1;       这个比较地址,生成了两个地址不同的对象bool b2=(object)"a"==(object)"a";  
    string是类,但你没发现你没有写new么?.net对字串处理比较特殊,它会检查当前动态分配的字串中是否有这个字串,如果有,则返回引用,否则创建新对象,返回引用。这里是存在的。自然指向同一个对象了。bool b3=((object)1).Equals((object)1); 这个是比较值 1=1 相等
      

  5.   

    To:kelong18433:
    b3为什么是比较值而不是引用呢?不明白……