Wie viele von Ihnen verwende ich ReSharper, um den Entwicklungsprozess zu beschleunigen. Wenn Sie damit die Gleichheitsmitglieder einer Klasse überschreiben, sieht das für GetHashCode () erzeugte Code-Gen folgendermaßen aus:
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;
}
}
Natürlich habe ich einige meiner eigenen Mitglieder dort, aber ich möchte wissen, warum 397?
- EDIT: Meine Frage wäre also besser formuliert als: Gibt es etwas Besonderes an der 397-Primzahl, die keine Primzahl ist?
hash
resharper
hash-code-uniqueness
Programmierer
quelle
quelle
Der von Resharper verwendete Hash sieht aus wie eine Variante des FNV- Hash. FNV wird häufig mit unterschiedlichen Primzahlen implementiert. Es gibt eine Diskussion über die geeignete Wahl von Primzahlen für FNV hier .
quelle