Всего одна оптимизация:
Мы можем использовать готовый EqualityComparer для сравнения значений, а не делегировать его.
Это также сделало бы реализацию чище, поскольку реальная логика сравнения теперь остается в GetHashCode () и Equals (), которые вы, возможно, уже перегружены.
Вот код:
public class MyComparer<T> : IEqualityComparer<T>
{
public bool Equals(T x, T y)
{
return EqualityComparer<T>.Default.Equals(x, y);
}
public int GetHashCode(T obj)
{
return obj.GetHashCode();
}
}
Не забудьте перегрузить методы GetHashCode () и Equals () для вашего объекта.
Этот пост помог мне: c # сравнить два общих значения
Sushil