Я хочу использовать метод HashSet.Contains, потому что он очень быстрый.Почему я не могу использовать client.Name.contains («smith») в IEqualityComparer <Customer> Метод равенства
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 внутри CustomerComparer Равно метод как .Contains?
Я обновил свой вопрос! :-) – Elisabeth
https://msdn.microsoft.com/library/ms132154(v=vs.110).aspx 'Equals' должно быть симметричным. Ваша реализация не является. – Henrik