Como muitos de vocês, eu uso o ReSharper para acelerar o processo de desenvolvimento. Quando você o usa para substituir os membros de igualdade de uma classe, o código-gen que produz para GetHashCode () se parece com:
public override int GetHashCode()
{
unchecked
{
int result = (Key != null ? Key.GetHashCode() : 0);
result = (result * 397) ^ (EditableProperty != null ? EditableProperty.GetHashCode() : 0);
result = (result * 397) ^ ObjectId;
return result;
}
}
É claro que tenho alguns dos meus membros lá, mas o que estou querendo saber é por que 397?
- EDIT: Então, minha pergunta seria melhor redigida como, existe algo 'especial' sobre o número primo 397 fora dele ser um número primo?
hash
resharper
hash-code-uniqueness
programador
fonte
fonte
O hash que o compartilhador usa parece uma variante do hash FNV . O FNV é frequentemente implementado com diferentes números primos. Há uma discussão sobre a escolha apropriada de números primos para FNV aqui .
fonte