Substituindo GetHashCode ()

EmEste artigo, Jon Skeet mencionou que ele geralmente usa esse tipo de algoritmo para ignorarGetHashCode ().

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;
  }
}

Agora, eu tentei usar isso, mas Resharper me diz que o métodoGetHashCode () deve ser hashing usando apenas campos somente leitura (ele compila bem, no entanto). O que seria uma boa prática, porque agora eu não posso realmente ter meus campos para ser somente leitura?

Eu tentei gerar esse método por Resharper, aqui está o resultado.

public override int GetHashCode()
{
  return base.GetHashCode();
}

Isso não contribui muito, para ser honesto ...

questionAnswers(3)

yourAnswerToTheQuestion