我搜索了我的问题的解决方案,但我想我再次尝试错误的关键字。我想比较两个observablecollection。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',但它跳转到返回语句中。
当然,我可以用MyClass的每个属性手工操作,但这不是很舒服。
value1
和value2
为object
s。==
总是通过引用来比较它们。
相反,您应该检查if (Equals(value1, value2))
,它将按值对它们进行比较。具体来说,它将在适当的null检查之后调用被覆盖的value1.Equals(value2)
。