比较两个类似的对象,以验证平等
问题描述:
我试图按位克隆对象进行比较,以其父检查使用的变化:比较两个类似的对象,以验证平等
If Not objCP.Equals(objCPClone) Then
'do something
End If
,它总是在创建克隆后,如不等于甚至立即进行比较。
他们应该如何比较以检查变化?
答
覆盖Equals
方法(以及沿途的GetHashCode
)实际检查所有必要字段或属性是否相等。默认实现(从Object
继承)只是检查引用是否相同(即它们是否指向相同的对象)。
答
和Massimiliano Peluso一样,你必须重写你的类的Equal方法,否则相等将基于CLR规则,在这种情况下,克隆不能等于它的原始值(取决于你是否使用值类型或者引用类型,或者类的属性类型)。