【发布时间】:2018-08-06 12:10:06
【问题描述】:
Object.Equals 总是返回 false,为什么不等于?
Student student = new Student(3, "Jack Poly");
Student otherStudent = (Student)student.Clone();
if (Object.Equals(student, otherStudent))
{
Console.WriteLine("Equal");
}
else
{
Console.WriteLine("Not Equal");
}
如下克隆方法
public override StudentPrototype Clone()
{
return this.MemberwiseClone() as StudentPrototype;
}
【问题讨论】:
-
因为
Clone返回两个差异实例。即使这些实例具有相同的属性,它们也不相等,除非您适当地覆盖Equals。 -
如果比较项是引用类型,则您正在进行深度克隆,object.equals 比较地址。