Есть ли встроенный IEqualityComparer, который сравнивает объекты по значению, возвращаемому их значением GetHashCode? Это легко написать, но я бы предпочел использовать предоставленный класс вместо пользовательского.
Текущий код:
private class HashComparer : IEqualityComparer<TKey>
{
private readonly Func<TKey, int> _Hasher;
public HashComparer (Func<TKey, int> hasher)
{
_Hasher = hasher;
}
public bool Equals (TKey x, TKey y)
{
// null supposed to throw, therefore no check
return _Hasher (x) == _Hasher (y);
}
public int GetHashCode (TKey obj)
{
return _Hasher (obj);
}
}