.NET で同じタイプの 2 つのオブジェクトを比較する簡単な方法はありますか。
オブジェクト プロパティ値の等価性に基づいて bool を返すことができる Compare(Object1, Object2) のようなものはありますか?
IComparable および IComparer インターフェイスについて読みましたが、1 つまたは 2 つのみではなく、すべてのプロパティの比較を検討しています。
よろしく。
.NET で同じタイプの 2 つのオブジェクトを比較する簡単な方法はありますか。
オブジェクト プロパティ値の等価性に基づいて bool を返すことができる Compare(Object1, Object2) のようなものはありますか?
IComparable および IComparer インターフェイスについて読みましたが、1 つまたは 2 つのみではなく、すべてのプロパティの比較を検討しています。
よろしく。
一般に、問題のクラスの詳細に応じて、説明する内容は Equals() メソッドの契約の一部です。
関連する各クラスは、独自のセマンティクスに基づいて Equals を実装する必要があります。
正式には、マイクロソフトの記事によると
http://msdn.microsoft.com/en-us/library/vstudio/336aedhh(v=vs.100).aspx
契約は次のとおりです。
x.Equals(x) は true を返します。
x.Equals(y) は、y.Equals(x) と同じ値を返します。
(x.Equals(y) && y.Equals(z)) は、x.Equals(z) が true を返す場合にのみ true を返します。
x.Equals(y) を連続して呼び出すと、x および y によって参照されるオブジェクトが変更されない限り、同じ値が返されます。
x.Equals(null) は false を返します。
さらに拡張できれば、特定のクラスの == および != 演算子をオーバーライドできます。通常、3 つすべて (equals と 2 演算子) をオーバーライドして、単体テストを使用して次のようなことを実行できるようにします。
CustomClass customClass1 = new CustomClass("Robert");
CustomClass customClass2 = new CustomClass("Robert");
Assert.IsTrue(customClass1 == customClass2);
Assert.AreEqual(customClass1, customClass2);
あなたが私に尋ねた場合、すべてのオプションを利用できると便利です。