この記事で、Jon Skeet は、通常はこの種のアルゴリズムを使用してGetHashCode()をオーバーライドすると述べました。
public override int GetHashCode()
{
unchecked // Overflow is fine, just wrap
{
int hash = 17;
// Suitable nullity checks etc, of course :)
hash = hash * 23 + Id.GetHashCode();
return hash;
}
}
今、私はこれを使用してみましたが、Resharper はメソッドGetHashCode()が読み取り専用フィールドのみを使用してハッシュする必要があることを教えてくれます (ただし、正常にコンパイルされます)。現在、自分のフィールドを読み取り専用にすることは本当にできないので、どのような良い習慣がありますか?
このメソッドを Resharper で生成してみました。結果は次のとおりです。
public override int GetHashCode()
{
return base.GetHashCode();
}
正直なところ、これはあまり貢献していません...