object a = (decimal)99;
        object b = (decimal)99;
        if (a.Equals(b))//equal结果是true,==结果是false
        {
            Response.Write("OK");
        }请大侠指点,哪些情况不能用==呢?(恕我不会用搜索引擎搜索"=="这样的关键字)

解决方案 »

  1.   

    http://www.cnblogs.com/JonZhiwei/archive/2011/03/17/1987554.html
      

  2.   

    Equals是virtual 函数,有object实际类型决定,因此调用的是System.Decimal的Equals函数,它是比较的是值。
    ==是运算符重载,有变量类型决定,你的例子,变量类型是object. ==在object中是比较引用,a,b执行不同对象,因此引用不同,返回false.
      

  3.   

    对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于string 以外的引用
    == 返回 true。对于 string 类型,== 比较字符串的值。
    ==操作比较的是两个变量的值是否相等。
    equals()方法比较的是两个对象的内容是否一致.equals也就是比较引用类型是否是对同一个对象的引用
      

  4.   

    1、Equals方法是比较值是否相等。
    2、== 也可以比较值的大小,但如果是对象就判断是否是同一个引用,很显然你上面不是同一个对象,因此为false。
      

  5.   

    最通俗的解释 == 必须两边完全一样 不仅仅是值 必须是同一对象 同一类型
    而equal 仅仅是对对象的值的比较 int x = 10  long y = 10L  double z = 10.0放在equal两边都是(true)