Я хочу использовать метод HashSet.Contains, потому что он очень быстрый.
var hashset = new HashSet<Customer>(customers, new CustomerComparer());
var found = hashset.Contains(new Customer{ Id = "1234", Name = "mit" }); // "mit" instead of an equals "smith" in the comparer.
Я ищу несколько свойств объекта клиента.
Мне нужно реализовать интерфейс IEqualityComparer, например:
public class CustomerComparer : IEqualityComparer<Customer>
{
public bool Equals(Customer x, Customer y)
{
return x.Id == y.Id && x.Name.Contains(y.Name);
}
public int GetHashCode(Customer obj)
{
return obj.Id.GetHashCode() ^ obj.Name.GetHashCode();
}
}
Почему метод Equals никогда не срабатывает, если я НЕ использую метод Equals внутри метода Equals CustomerComparer, такого как .Contains?
Equals
должен быть симметричным. Ваша реализация - нет. - person Henrik   schedule 09.12.2016