IComparer
インターフェイス(汎用と非汎用の両方)では、2つのインスタンスを互いに比較できます。
Compare
メソッドを使用すると、オブジェクト自体を別のインスタンスと比較できます。 Offcourse、現在のインスタンスがnullの場合、 'null'インスタンスでCompare
を呼び出したので、この場合はNullReferenceException
が返されます。 IComparer
を実装するクラスは、この問題を克服できます。あなたがIComparerインターフェイスを実装する場合
そう、あなたは次のように呼び出すことができる「比較」メソッド、持っているクラスがあります:
public class MyObjectComparer : IComparer<MyObject>
{
public int Compare(MyObject first, MyObject second)
{
// implement logic here to determine whether first is less, greater or equal then second.
}
}
をこれは、あなたがこれを行うことができます:
var c = new MyObjectComparer();
var one = new MyObject();
var two = new MyObject();
c.Compare (one, two);
あなたがIEqualityComparer
インスタンスを指定するコンストラクタとHashtable
をインスタンス化するとき、これは所与IEqualityComparer
は、特定のキーがハッシュテーブルに既に存在するかどうかを決定するために使用されることを意味します。
それ以外の場合は、キーオブジェクトのCompareメソッドが使用されます。