我搜索了我的问题的解决方案,但我想我再次尝试错误的关键字。 我想比较两个ObservableCollections。 Equals和SequenceEqual不起作用。
我用反射写了一些比较方法:
var properties = typeof(MyClass).GetProperties();
for (var i = 0; i < list1.Count(); i++)
{
foreach (var property in properties)
{
var value1 = property.GetValue(list1[i]);
var value2 = property.GetValue(list2[i]);
if (value1 != value2)
{
return false;
}
}
}
value1和value2都是'true'但跳转到return语句。
当然,我可以使用MyClass的每个属性手动完成,但这并不是很舒服。 希望你能告诉我我的错误在哪里。
答案 0 :(得分:3)
value1
和value2
装箱object
s
==
将始终通过引用对其进行比较。
相反,您应该检查if (Equals(value1, value2))
,然后按值对它们进行比较
具体来说,在适当的空检查后,它将调用被覆盖的value1.Equals(value2)
。