У меня есть класс MyItems, который реализует IEqualityComparer и переопределяет следующие методы:
public bool Equals(MyItems item1, MyItems item2)
{
return (item1.ID == item2.ID && item1.itemName.Equals(item2));
}
public int GetHashCode(MyItems item)
{
return item.ID.GetHashCode() ^ item.itemName.GetHashCode();
}
Во-первых, зачем нужно GetHashCode
? Я понимаю переопределение метода Equals
, однако необходимость GetHashCode
ускользнула от меня.
Во-вторых, похоже, это не работает. Есть ли что-то, что я делаю неправильно здесь? Где я не понимаю GetHashCode,
, что, возможно, где я спотыкаюсь.
MyItems
сам реализуетIEqualityComparer<MyItems>
, что-то не так. Либо: переопределитьEquals(object)
(один параметр) и переопределитьGetHashCode()
(ноль параметров). Или: Напишите другой класс для сравненияMyItems
; лучший способ — наследоваться от абстрактного классаEqualityComparer<>
. - person Jeppe Stig Nielsen   schedule 03.01.2013