c# - Object.Equals 返回 false
问题描述
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;
}
解决方案
看这篇文章MSDN
如果当前实例是引用类型,则 Equals(Object) 方法测试引用相等性,并且对 Equals(Object) 方法的调用等效于对 ReferenceEquals 方法的调用。引用相等意味着被比较的对象变量引用同一个对象。
YourStudent
是一个引用类型,克隆MemberwiseClone
返回一个新的 other object
。
Student student = new Student(3, "Jack Poly");
Student otherStudent = (Student)student.Clone();
所以Equal
必须返回false
推荐阅读
- javascript - ChartJS unique datasets per label
- node.js - Mongoose 使用 schema.post 递增或递减不递减
- azure-functions - Azure 函数停止将消息放入存储队列
- rdp - 黑盒中的鳄梨酱 RDP 远程应用程序
- ubuntu - npm 在 CircleCI 构建中返回“权限被拒绝”
- javascript - 身份验证与 angularfire2 signInWithPopup 和 signInWithRedirect 之间的区别
- php - 只为插件 CakePHP 3 定制模板 FormHelper?
- python - 如何在 python 中使用 join 将以下代码输出转换为一行。目前对于两个单词输入,我在两行中得到输出
- python - Python:使用reportlab打印pdf文件
- symfony - 在 Symfony 3.4 中清除 FileSystemCache