<r>Je vais généralement avec quelque chose comme l'implémentation donnée dans le fabuleux Effective Java de Josh Bloch. C'est rapide et crée un hash assez bon, peu susceptible de provoquer des collisions. Choisissez deux nombres premiers différents, par ex. 17 et 23, et faites :<br/>
<br/>
public override int GetHashCode()<br/>
{<br/>
unchecked // Overflow is fine, just wrap<br/>
{<br/>
int hash = 17;<br/>
// Suitable nullity checks etc, of course <E>:)</E><br/>
hash = hash * 23 + field1.GetHashCode();<br/>
hash = hash * 23 + field2.GetHashCode();<br/>
hash = hash * 23 + field3.G</r>