ObservableCollection中的C#Equality

Bla*_*ckM 2 c# wpf equality

我有一个自定义对象,我已成功覆盖Equals和HashCode函数.然后我有2个Observable Collections,我在其上初始化完全相同的对象(但使用不同的引用).所以我有这个代码:

if (qObjects.Equals(qObjects2))
{
    Console.WriteLine("Arrays are equal");
}
Run Code Online (Sandbox Code Playgroud)

我期望返回true但返回false.你可能会说我在Equal和HashCode函数上做错了.但这很奇怪:

for (int i = 0; i < qObjects.Count(); i++)
{
    arraysIsEqual = qObjects[i].Equals(qObjects2[i]);

    if (!arraysIsEqual)
    {
        break;
    }
}

if (arraysIsEqual)
{
    Console.WriteLine("Arrays are equal");
}
Run Code Online (Sandbox Code Playgroud)

上面的代码片段返回true.那么我在这里缺少什么?

sla*_*win 7

当您与集合进行比较时Equals,ObservableCollection将比较对象本身.这显然会导致false,因为集合的类不会覆盖Equals(它继承自Object比较引用).为了不必自己迭代对象,您可以使用SequenceEquals方法.

if (qObjects.SequenceEquals(qObjects2)) {
   Console.WriteLine("Arrays are equal");
  } 
Run Code Online (Sandbox Code Playgroud)