2010-03-11 129 views
3

两个List 我有一个名为 比较在C#

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; //??? 

回答

7

尝试使用以下

ListA.SequenceEquals(ListB); 

SequenceEquals的是在Enumerable类可用的扩展方法。这是在C#3.5的项目默认情况下可用,因为它配备了System.Linq的

0

要回答你的问题,不,你不应该得到正确的。 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。