Comment le GetHashCode d'une implémentation concrète de IEqualityComparer fonctionne-t-il?Linq Union - IEqualityComparer et # d'exécutions
La raison pour laquelle je demande est que j'utilise linq pour l'union deux collections, et quand seulement la collection gauche a un élément GetHashCode est appelé deux fois. Suite à cela, il est appelé quatre fois si les deux collections ont une rangée.
Il s'agit d'une saisie grossière, mais vous aurez compris. GetHashCode est appelé deux fois, ce que je devine est deux fois pour l'un élément dans listOne?
par exemple.
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;
}
}
}
Merci
Vous avez ce qui ressemble à une ligne inachevée là, juste au-dessus de votre déclaration de retour. Parenthèse non fermée, déclaration ternaire inachevée. –