我有一个称为类

MyClass

此类继承IEquatable和器具等于我需要它的方式。 (含义:当我比较两个单独MyClass的在代码tyupe对象,它的工作原理)

我然后创建两个列表:

var ListA = new List<MyClass>();
var ListB = new List<MyClass>();
// Add distinct objects that are equal to one another to 
// ListA and ListB in such a way that they are not added in the same order.

当我去比较利斯塔和数组listB,我应该得到真的吗?

ListA.Equals(ListB)==true; //???
有帮助吗?

解决方案

尝试使用以下

ListA.SequenceEquals(ListB);

SequenceEquals的是在Enumerable类可用的扩展方法。这是默认可用在C#3.5的项目,因为它带有System.Linq的

其他提示

要回答你的问题,不,你不应该得到正确的。 ListList<T>不定义.Equals,所以它们继承的Object.Equals,检查以下内容:

public static bool Equals(object objA, object objB)
{
    return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
}

objA.Equals(objB)是虚拟的。如果我没有记错,默认的实现只检查引用相等(指向内存中的同一个对象),因此您的代码将返回false。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top