==一般是对数值的比较,比如 int i = 34, if (i==45)else ...或者是char i='a'; if (i=='a')else, 但是如果要比较其他的object的话,就要用equals,最常见的是String,比如
String s = "Dfdfd"; if (s.equals("ddfdf"))else{...},一般都是这样进行比较的。

解决方案 »

  1.   

    ==利用操作符重载实现了equals(有些类就是这样实现)
      

  2.   

    vb.net中,用"="不能进行比较时,我常用equals.(vb.net中没有==)
    自从学习C#后,使用中我都用==,感觉不出equals有何用.只是觉得equals是.net framework中自带的,就如C#中的typeof与.NET Framework中的方法GetType 也有类似的关系!
      

  3.   

    VB.NET可以区分引用比较(Is)和值比较(=),但是C#不能区分。==和Equals在C#中的功能总是同步的(仅限.NET内部所有类),要么没有重载都是引用比较,要么重载了都是值的比较。
      

  4.   

    == 一般情况下是两个数值的比较。。但有些例外比如两个 string 类型也可以比较。。equals 是用在用在引用数据类型的比较。。
      

  5.   

    在null值上调用.Equals会报异常,而== 就不会
      

  6.   

    什么时候应该使用 ==?什么时候应该使用 Equals?Equals 方法只是在 System.Object 中定义的一个虚拟方法,它由任何选择执行该任务的类所重写。== 运算符是一个可由类重载的运算符,该类通常具有恒等行为。对于未重载 == 的引用类型,该运算符会比较两个引用类型是否引用同一对象,而这恰好是 System.Object 中的 Equals 实现所做的工作。对于未重载 == 的值类型,该运算符会比较这两个值是否"按位"相等,即是否这两个值中的每个字段都相等。当您对值类型调用 Equals 时,仍然会发生这一情况,但这一次,该实现是由 ValueType 提供的,并且使用反射进行比较,从而使比较速度比特定于类型的实现慢很多。到此为止,二者是如此类似。二者之间的主要区别是多态。运算符被重载而不是被重写,这意味着除非编译器知道调用更为具体的版本,否则它只是调用恒等版本。为阐明这一点,请看下面这个示例:using System;
    public class Test
    {
    static void Main()
    {
            // Create two equal but distinct strings
            string a = new string(new char[] {'h', 'e', 'l', 'l', 'o'});
            string b = new string(new char[] {'h', 'e', 'l', 'l', 'o'});
            Console.WriteLine (a==b);
            Console.WriteLine (a.Equals(b));
            // Now let's see what happens with the same tests but
            // with variables of type object
            object c = a;
            object d = b;
            Console.WriteLine (c==d);
            Console.WriteLine (c.Equals(d));
        }
    }结果是:True
    True
    False
    True第三行是 False,原因在于编译器不知道 c 和 d 的内容都是字符串引用,因而只能调用 == 的非重载版本。因为它们是对不同字符串的引用,所以恒等运算符返回 False。那么,应该如何区别使用这些运算符呢?我的准则是:对于几乎所有引用类型,当您希望测试相等性而不是引用一致性时,请使用 Equals。例外的情况是字符串 - 使用 == 比较字符串确实会使事情简单得多,而且代码可读性更好,但是 您需要记住,该运算符的两端都必须是类型字符串表达式,才能使比较正常进行。对于值类型,我通常使用 ==,因为除非值类型本身包含引用类型(这种情况极为罕见),否则是恒等还是相等的问题无关紧要。
      

  7.   

    数值型对象==表示两个对象的值相等,引用型对象==表示两个对象指向同一个对象,equals比较两个对象的值是否相等。
      

  8.   

    对于继承自Object的类,是否要重载Equals方法来实现这个功能??
    我的两个指向不同地址的类对象,内容完全一致,但Equals却返回false,是不是因为没有重载方法的缘故?
      

  9.   

    Equals 可以带参数》
    可以区别两个字符串要不要区分大小写
      

  10.   

    .NET Framework 类库   Object.Equals 方法  [C#]请参见
    Object 类 | Object 成员 | System 命名空间 | C++ 托管扩展编程 
    语言
    C#C++JScriptVisual Basic全部显示
    确定两个 Object 实例是否相等。重载列表
    确定指定的 Object 是否等于当前的 Object。受 .NET Framework 精简版的支持。[Visual Basic] Overloads Public Overridable Function Equals(Object) As Boolean
    [C#] public virtual bool Equals(object);
    [C++] public: virtual bool Equals(Object*);
    [JScript] public function Equals(Object) : Boolean;
    确定指定的 Object 实例是否被视为相等。[Visual Basic] Overloads Public Shared Function Equals(Object, Object) As Boolean
    [C#] public static bool Equals(object, object);
    [C++] public: static bool Equals(Object*, Object*);
    [JScript] public static function Equals(Object, Object) : Boolean;
    示例
    [C#, JScript] 下面的代码示例比较不同的对象。[C#, JScript] 注意   此示例显示如何使用 Equals 的一个重载版本。有关其他可用示例,请参阅单独的重载主题。
    [C#] 
    using System;public class MyClass {
       public static void Main() {
       string s1 = "Tom";
       string s2 = "Carol";
       Console.WriteLine("Object.Equals(\"{0}\", \"{1}\") => {2}", 
          s1, s2, Object.Equals(s1, s2));   s1 = "Tom";
       s2 = "Tom";
       Console.WriteLine("Object.Equals(\"{0}\", \"{1}\") => {2}", 
          s1, s2, Object.Equals(s1, s2));   s1 = null;
       s2 = "Tom";
       Console.WriteLine("Object.Equals(null, \"{1}\") => {2}",
           s1, s2, Object.Equals(s1, s2));   s1 = "Carol";
       s2 = null;
       Console.WriteLine("Object.Equals(\"{0}\", null) => {2}", 
           s1, s2, Object.Equals(s1, s2));   s1 = null;
       s2 = null;
       Console.WriteLine("Object.Equals(null, null) => {2}", 
           s1, s2, Object.Equals(s1, s2));
       }
    }
    /*This code produces the following output.Object.Equals("Tom", "Carol") => False
    Object.Equals("Tom", "Tom") => True
    Object.Equals(null, "Tom") => False
    Object.Equals("Carol", null) => False
    Object.Equals(null, null) => True*/[JScript] 
    import Systempackage Equals0
    {    public class MyClass {
       public static function Main() {
       var s1 : String = "Tom";
       var s2 : String = "Carol";
       var array : Object [] = new Object[3];   array[0] = s1;
       array[1] = s2;
       array[2] = System.Object.Equals(s1, s2);   Console.WriteLine("Object.Equals('{0}', '{1}') => {2}", 
          array);   s1 = "Tom";
       s2 = "Tom";
       array[0] = s1;
       array[1] = s2;
       array[2] = System.Object.Equals(s1, s2);
       
       Console.WriteLine("Object.Equals('{0}', '{1}') => {2}", 
          array);   s1 = null;
       s2 = "Tom";
       array[0] = s1;
       array[1] = s2;
       array[2] = System.Object.Equals(s1, s2);
       
       Console.WriteLine("Object.Equals(null, '{1}') => {2}",
           array);   s1 = "Carol";
       s2 = null;
       array[0] = s1;
       array[1] = s2;
       array[2] = System.Object.Equals(s1, s2);
       
       Console.WriteLine("Object.Equals('{0}', null) => {2}", 
           array);   s1 = null;
       s2 = null;
       array[0] = s1;
       array[1] = s2;
       array[2] = System.Object.Equals(s1, s2);
       Console.WriteLine("Object.Equals(null, null) => {2}", 
           array);
       }   
    }}Equals0.MyClass.Main();
    /*This code produces the following output.Object.Equals("Tom", "Carol") => False
    Object.Equals("Tom", "Tom") => True
    Object.Equals(null, "Tom") => False
    Object.Equals("Carol", null) => False
    Object.Equals(null, null) => True*/[Visual Basic, C++] 没有可用于 Visual Basic 或 C++ 的示例。若要查看 C# 或 JScript 示例,请单击页左上角的“语言筛选器”按钮 。请参见
    Object 类 | Object 成员 | System 命名空间 | C++ 托管扩展编程 
    --------------------------------------------------------------------------------发送有关此主题的意见 © 2001-2002 Microsoft Corporation。保留所有权利。 
      

  11.   

    好像有一本书说到过,Equals的效率比==要高一些。
      

  12.   

    建议你去中文MSDN去看看!上面有讲这个问题!
      

  13.   

    equals 用在对象之间 == 用在基本数据类型之间