日期:2014-05-18  浏览次数:20875 次

decimal Equals和==的不同
object a = (decimal)99;
  object b = (decimal)99;
  if (a.Equals(b))//equal结果是true,==结果是false
  {
  Response.Write("OK");
  }

请大侠指点,哪些情况不能用==呢?

(恕我不会用搜索引擎搜索"=="这样的关键字)

------解决方案--------------------
Equals是virtual 函数,有object实际类型决定,因此调用的是System.Decimal的Equals函数,它是比较的是值。


==是运算符重载,有变量类型决定,你的例子,变量类型是object. ==在object中是比较引用,a,b执行不同对象,因此引用不同,返回false.
------解决方案--------------------
对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于string 以外的引用
== 返回 true。对于 string 类型,== 比较字符串的值。
==操作比较的是两个变量的值是否相等。
equals()方法比较的是两个对象的内容是否一致.equals也就是比较引用类型是否是对同一个对象的引用