Seperti banyak dari Anda, saya menggunakan ReSharper untuk mempercepat proses pengembangan. Saat Anda menggunakannya untuk mengganti anggota kesetaraan kelas, kode-gen yang dihasilkannya untuk GetHashCode () terlihat seperti:
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;
}
}
Tentu saja saya memiliki beberapa anggota saya sendiri di sana, tetapi apa yang ingin saya ketahui adalah mengapa 397?
- EDIT: Jadi pertanyaan saya akan lebih baik, apakah ada sesuatu yang 'istimewa' tentang bilangan prima 397 di luar itu menjadi bilangan prima?
hash
resharper
hash-code-uniqueness
programmer
sumber
sumber
Hash yang digunakan resharper terlihat seperti varian hash FNV . FNV sering diimplementasikan dengan bilangan prima yang berbeda. Ada diskusi tentang pilihan bilangan prima untuk FNV di sini .
sumber