Описание тега iequalitycomparer

IEqualityComparer - это интерфейс платформы.NET, который позволяет реализовать настраиваемое сравнение на равенство для коллекций. То есть вы можете создать собственное определение равенства и указать, что это определение будет использоваться с типом коллекции, который принимает интерфейс IEqualityComparer. Поддерживается в.NET версий 3.5, 3.0, 2.0 (Источник: MSDN)

Этот интерфейс позволяет реализовать настраиваемое сравнение на равенство для коллекций. То есть вы можете создать собственное определение равенства и указать, что это определение будет использоваться с типом коллекции, который принимает интерфейс IEqualityComparer. В.NET Framework конструкторы типов коллекций Hashtable, NameValueCollection и OrderedDictionary принимают этот интерфейс.

Этот интерфейс поддерживает только сравнения на равенство. Настройка сравнений для сортировки и упорядочивания обеспечивается интерфейсом IComparer.

Для общей версии этого интерфейса см. System.Collections.Generic.IEqualityComparer(Of T).

В следующем примере кода демонстрируется реализация IEqualityComparer без учета регистра. В этом примере метод CaseInsensitiveComparer.Compare используется для определения равенства двух объектов на основе предоставленной CultureInfo.

class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    publicnewbool Equals(object x, object y)
    {
        if (myComparer.Compare(x, y) == 0)
        {
            returntrue;
        }
        else
        {
            returnfalse;
        }
    }

    publicint GetHashCode(object obj)
    {
        return obj.ToString().ToLower().GetHashCode();
    }
}

Источник: MSDN