rt

解决方案 »

  1.   

    ==是两个值对比,equals是两个object对象的对比
      

  2.   

    ==指引用是否相同 
    equals()指的是值是否相同 字符串是特殊的~ 
    字符串是对象,新建个“abc”的字符串的时候,系统会先到内存中找,看是否存在‘a’,‘b’,‘c’,如果存在,引用,不存在新建 
    所以你打出来的是true
      

  3.   

    看看这个应该有点帮助
    http://blog.csdn.net/Knight94/archive/2006/08/11/1050901.aspx
      

  4.   

    equals是判断地址相等
    ==是判断值相等
      

  5.   

    得分你比什么,
    个人认为在.net里没区别 ==调的就是equals
      

  6.   

    感觉也是,java里面有特别的说明,他们的区别
    但dotnet似乎没有
      

  7.   

    在 C# 中它们的区别非常小,大多数情况下可以认为它们是相同的...Equals 的默认实现仅支持引用相等,但派生类可重写此方法以支持值相等。默认情况下,运算符 == 通过判断两个引用是否指示同一对象来测试引用是否相等,因此引用类型不需要实现运算符 == 就能获得此功能。当类型不可变时,意味着实例中包含的数据不可更改,此时通过重载运算符 == 来比较值是否相等而不是比较引用是否相等可能会很有用,因为作为不可变的对象,只要它们具有相同的值,就可以将它们看作是相同的。建议不要在非不可变类型中重写运算符 ==。 若要检查引用相等性,应使用 ReferenceEquals。若要检查值相等性,应使用 == 或 Equals。
      

  8.   

    ==对于内置值类型,判断的是两个对象的代数值是否相等。它会根据需要自动进行必要的类型转换,并根据两个对象的值是否相等返回true或者false.
    而对于用户定义的值类型,如果没有重载==操作符,==将是不能够使用的。例如:struct
    默认对于引用类型,用于比较两个引用类型的对象是否是对于同一个对象的引用
    Equals方法对于值类型和引用类型的定义不同,对于值类型,类型相同,并且数值相同(对于struct的每个成员都必须相同),则Equals返回true,否则返回false;
    默认对于引用类型,用于比较两个引用类型的对象是否是对于同一个对象的引用