Я хотел бы использовать HashSet<>
для хранения больших количеств (50-100) определенного пользовательского класса, назовем его "Плакат". Насколько я знаю, есть преимущество в производительности при использовании HashSet<>
для большого количества элементов в List<>
. Но для того, чтобы воспользоваться этим приростом производительности, мне нужно "определить" оба из них?
public bool Equals(Poster a, Poster b)
public int GetHashCode(Poster obj)
ОБНОВЛЕНИЕ: для тех, кто смотрит, как их реализовать, вот как я это сделал:
public bool Equals(PosterImage a, PosterImage b)
{
return (a.ApiId == b.ApiId);
}
public int GetHashCode(PosterImage obj)
{
return ((PosterImage) obj).ApiId.GetHashCode();
}
Да, если вы реализуете IEqualityComparer<Poster>
, вам необходимо реализовать эти методы. Вам нужно будет передать сопоставление равенства с конструктором HashSet<Poster>
.
Другой вариант - реализовать логику равенства /hashcode в самом классе Poster
; в этом случае вы должны переопределить эти методы:
public bool Equals(object obj)
public int GetHashCode()