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

对象相等问题
class Program
  {
  static void Main(string[] args)
  {
  object a = new object();
  object b = new object();
  Console.WriteLine(a.Equals(b));

  DateTime c = new DateTime(2012, 4, 18);
  DateTime d = new DateTime(2012, 4, 18);
  Console.WriteLine(c.Equals(d));

  Console.ReadKey();
  }
  }

各位大神求指教,为什么第一个输出为false,而第二个输出为true??????

------解决方案--------------------
Equals方法被重载过了,等不等都取决于里面的判断方法。
------解决方案--------------------
第一个比较引用
第二个比较值
------解决方案--------------------
这是object 的
public static bool Equals(object objA, object objB)
{
return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
}

这是DateTime 的
public bool Equals(DateTime value)
{
return (this.InternalTicks == value.InternalTicks);
}

 

 

------解决方案--------------------
第一个比较的是引用勒嘛 object
第2个比较的是 DateTime C和 DateTime B的值`````
------解决方案--------------------
对象相等的问题哈?重写Equals方法就好了。

如果要当Dictionary<>的Key,那还要重写GetHashCode()方法,不过用对象当Key。。。还不如重新写个类。