【问题标题】:Compare two collections比较两个集合
【发布时间】:2012-12-25 04:11:20
【问题描述】:

我搜索了我的问题的解决方案,但我想我再次尝试了错误的关键字。 我想比较两个 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 都是“真”,但它会跳转到 return 语句。

当然,我可以使用 MyClass 的每个属性手动完成,但这并不是很舒服。 希望你能告诉我我的错误在哪里。

【问题讨论】:

标签: c# reflection collections compare observablecollection


【解决方案1】:

value1value2 被装箱 objects。
== 将始终通过引用来比较它们。

相反,您应该检查if (Equals(value1, value2)),它将按值比较它们。
具体来说,它会在适当的空检查后调用被覆盖的value1.Equals(value2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 2023-03-23
    相关资源
    最近更新 更多