2010-03-11 102 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。