C# 比较两个对象是否是同一对象
前言
在现实中的编程生活里,我们时常遇到一个棘手的问题:如何比较两个相同类型的对象是否 "相等",比如在 ERP 系统中,企业的信息非常重要,每一次更新维护,都需要系统自动地详细记录更新前后企业不一致的信息、更新时间和更新人等等。
但是,直接比较通常只能告诉我们它们是否指向同一个内存地址,而不能告诉我们它们的内容是否一致,所以即使两个相同类型的对象的值都一致,程序还是偏偏说:"对不起,他们没关系!" 那我们应该怎么办呢?别急,接下来我们一起探索。
在 C# 中,要比较两个对象实例是否相等,有一些常用的方法。
比如实现 IEquatable<T> 接口、重写 Object.Equals 方法,或使用自定义比较逻辑等等。
以下是 7 种常用的方法:
1. 实现 IEquatable接口
实现 IEquatable<T> 接口是一个好习惯,就像在你的小屋里挂上一个 "欢迎光临" 的牌子,让外界知道你准备好接受比较了,实现这个接口之后,你还可以创建更强类型的比较方法。
public class Test : IEquatable<Test> { public int Id { get; set; } public string Name&nbs