首页 > 解决方案 > 如何在 Vb.net 中检查两个对象是否相同

问题描述

我试图比较两个相同类型的对象并确定它们相同。我有

objA objB

objA.Equals(objB)

但每次我都变得虚假。这是我正在尝试的代码

Public Class RowsDetails    
  Property RelatedEmployee As String = String.Empty
    Property RelatedNumberAs String = String.Empty
    Property Type As String = String.Empty
    Property ReportType As String = String.Empty
    Property status As String = String.Empty
    Property Term As String = String.Empty
    Property Currency As String = String.Empty    

End Class

所有属性在 objA 和 objB 中具有相同的值。我已经阅读了一些解释实现IEquatable(of T)的文章。

但它们大多看起来像自定义逻辑。我想知道有没有一种简单的方法可以做到这一点?

提前致谢。

标签: asp.netvb.netoopobject

解决方案


每当您比较两个对象时,都必须建立确定等效性的方法。

等价的主要形式有 3 种:

类型等价:用TypeOf操作符完成。谁的行为可以在这里找到

参考等价:由is操作员完成。在这里找到

价值平等(这似乎是你试图做的)需要定义一个比较方法。否则,它将通过使用默认的 Equals() 方法进行最佳猜测。


如果这些都不适合您,那么您必须定义自己的比较方法。

除了实现 IEquatable() 或重载 Equals() 之外,唯一的其他方法是获取两个对象的哈希并比较它们。


推荐阅读