質問

私は

と呼ばれるクラスを持っています
MyClass

このクラスは、IEquatableや道具が、私はそれが必要な方法に等しい継承します。 (意味:私は個々にコード内のオブジェクトtyupe 2つのMyClassを比較するときに、それが動作)

私は、2つのリストを作成します:

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.

私は、LISTAとListBのを比較するために行く、私は本当の取得すべきですか?

ListA.Equals(ListB)==true; //???
役に立ちましたか?

解決

タグ以下をお試しください
ListA.SequenceEquals(ListB);

SequenceEquals Enumerableクラスで使用可能な拡張方法です。それは

System.Linqの付属していますので、これは、C#3.5のプロジェクトではデフォルトで提供されています

他のヒント

あなたの質問に答えるために、いいえ、あなたは本当の取得べきではありません。 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