IEqualityComparer インターフェイス
アセンブリ: mscorlib (mscorlib.dll 内)


このインターフェイスを使用すると、複数のコレクションが等しいかどうかの比較方法をカスタマイズし、実装できます。つまり、等値の定義を独自に作成し、この定義が、IEqualityComparer インターフェイスを受け付けるコレクション型で使用されるように指定できます。.NET Framework では、Hashtable、NameValueCollection、および OrderedDictionary の各コレクション型のコンストラクタが、このインターフェイスを受け付けます。
このインターフェイスは、等値であるかどうかの比較だけをサポートします。並べ替え操作と順序に対する比較は、IComparer インターフェイスによってカスタマイズできます。
このインターフェイスのジェネリック バージョンについては、「System.Collections.Generic.IEqualityComparer」を参照してください。

大文字と小文字を区別しない IEqualityComparer の実装方法を次のコード例に示します。この例では、指定された CultureInfo に基づき、CaseInsensitiveComparer.Compare メソッドを使用して、2 つのオブジェクトが等しいかどうかを判断しています。
Public Class myCultureComparer Implements IEqualityComparer Dim myComparer As CaseInsensitiveComparer Public Sub New() myComparer = CaseInsensitiveComparer.DefaultInvariant End Sub Public Sub New(ByVal myCulture As CultureInfo) myComparer = New CaseInsensitiveComparer(myCulture) End Sub Public Function Equals1(ByVal x As Object, ByVal y As Object) _ As Boolean Implements IEqualityComparer.Equals If (myComparer.Compare(x, y) = 0) Then Return True Else Return False End If End Function Public Function GetHashCode1(ByVal obj As Object) _ As Integer Implements IEqualityComparer.GetHashCode Return obj.ToString().ToLower().GetHashCode() End Function End Class
class myCultureComparer : IEqualityComparer { public CaseInsensitiveComparer myComparer; public myCultureComparer() { myComparer = CaseInsensitiveComparer.DefaultInvariant; } public myCultureComparer(CultureInfo myCulture) { myComparer = new CaseInsensitiveComparer(myCulture); } public new bool Equals(object x, object y) { if (myComparer.Compare(x, y) == 0) { return true; } else { return false; } } public int GetHashCode(object obj) { return obj.ToString().ToLower().GetHashCode(); } }
ref class myCultureComparer : IEqualityComparer { private: CaseInsensitiveComparer^ myComparer; public: myCultureComparer() { myComparer = CaseInsensitiveComparer::DefaultInvariant; } myCultureComparer(CultureInfo^ myCulture) { myComparer = gcnew CaseInsensitiveComparer(myCulture); } virtual bool Equals(Object^ x, Object^ y) { if (myComparer->Compare(x, y) == 0) { return true; } else { return false; } } virtual int GetHashCode(Object^ obj) { return obj->ToString()->ToLower()->GetHashCode(); } };

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- IEqualityComparer インターフェイスのページへのリンク