Интересно, как работает GetHashCode конкретной реализации IEqualityComparer?
Причина, по которой я спрашиваю, заключается в том, что я использую linq для объединения двух коллекций, и когда только левая коллекция имеет элемент, GetHashCode вызывается дважды.Кроме того, он вызывается четыре раза, если обе коллекции имеют одну строку.
Это грубая печать, но вы поймете.GetHashCode вызывается дважды, что, я думаю, дважды для одного элемента в listOne?
например,
var listOne = new List<SearchResult>{new SearchResult{Name="Blah"}};
var listTwo = new List<SearchResult>();
listOne.Union(listTwo, SearchResultComparer);
public class SearchResultComparer : IEqualityComparer<SearchResult>
{
public bool Equals(SearchResult x, SearchResult y){....}
public int GetHashCode(SearchResult obj)
{
unchecked
{
int result = 0;
result = (result * 397) ^ (obj.Name != null ?
return result;
}
}
}
Спасибо