对象相等问题
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。。。还不如重新写个类。