104

どちらのインターフェースもオブジェクトを比較して等しいように見えますが、それらの主な違いは何ですか?

4

5 に答える 5

203

IEquatable2 つのオブジェクトが等しいかどうかをテストします。

IComparable比較されるオブジェクトに完全な順序付けを課します。

たとえば、IEquatableは 5 が 7 と等しくないことを 示します。IComparableは 5 が 7 の前にあることを示します。

于 2010-03-09T15:22:00.350 に答える
23

IEquatable<T>平等のために。

IComparable<T>注文するため。

于 2010-03-09T16:15:46.170 に答える
12

グレッグDの答えに加えて:

部分的な順序付けが理にかなっていて、ゼロを返すという理由だけで消費者にそれを推測させたい場合は、実装せずに実装することができますが、これはIComparableオブジェクトが等しいことを意味しません(並べ替えの目的以外)。IEquatableCompareTo()

于 2010-03-09T15:30:29.993 に答える
8

IEquatableの MSDN ページに記載されているとおり:

IComparable インターフェイスはCompareTo、実装する型のインスタンスの並べ替え順序を決定するメソッドを定義します。IEquatable インターフェイスはEquals、実装する型のインスタンスが等しいかどうかを判断するメソッドを定義します。

Equals対。CompareTo

于 2010-03-09T15:22:57.817 に答える