我搜索了stackoverflow并找到了很多答案来比较Visual Studio中的两个复杂对象(特别是VB.NET),但是没有找到适合我的东西。
我的对象包含40多种不同数据类型的属性(整数,双精度,双精度列表,字符串列表列表等),并且可以在程序更新的任何时候添加其他属性,因此使用反射手动输入出每个属性名称对我没用。
具体来说,这就是两个对象的组织方式
Obj1 = New List(of CustomClass)
Obj2 = New List(of CustomClass)
“CustomClass”有40多个属性,例如:
Dim _Color1 as Color
Dim Prop1 as New List(of String)
Dim _Event1 as New List(of List(of String))
...
我尝试过使用: Obj1是Obj2 Object.Compare(Obj1,Obj2) Obj1.equals(OBJ2)
即使Obj1和Obj2包含相同的值,它们仍然会评估为false。
我也试过了:
For Each ObjSub as CustomClass in Obj1
If Obj2.Contains(Obj1) = True Then
End If
Next
但是。即使Obj1和Obj2包含相同的值,.Contains也会计算为False。
有没有办法比较Obj1和Obj2中的值而不必输入所有40-ish属性?
答案 0 :(得分:1)
您要查找的内容称为深或递归比较。不幸的是,.NET框架中没有任何内置功能可以做到这一点。
这是一项非常重要的任务,特别是如果您有嵌套的集合类型。以下问题列出了C#人员针对此问题找到的一些常见解决方案。如果您将它们转换为VB或将它们用作外部库,它们也可能是您的选择:
答案 1 :(得分:0)
尝试使用此代替代码:
For Each ObjSub as CustomClass in Obj1
If Obj2.Contains(ObjSub) Then
End If
Next
您想知道Obj2
是否包含Obj1
的元素,而不是Obj1
本身。