1

.NET で同じタイプの 2 つのオブジェクトを比較する簡単な方法はありますか。

オブジェクト プロパティ値の等価性に基づいて bool を返すことができる Compare(Object1, Object2) のようなものはありますか?

IComparable および IComparer インターフェイスについて読みましたが、1 つまたは 2 つのみではなく、すべてのプロパティの比較を検討しています。

よろしく。

4

2 に答える 2

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 を返します。

于 2012-11-23T04:25:03.373 に答える
0

さらに拡張できれば、特定のクラスの == および != 演算子をオーバーライドできます。通常、3 つすべて (equals と 2 演算子) をオーバーライドして、単体テストを使用して次のようなことを実行できるようにします。

CustomClass customClass1 = new CustomClass("Robert");
CustomClass customClass2 = new CustomClass("Robert");

Assert.IsTrue(customClass1 == customClass2);
Assert.AreEqual(customClass1, customClass2);

あなたが私に尋ねた場合、すべてのオプションを利用できると便利です。

于 2012-11-23T04:29:28.033 に答える