Wie kann man den Hash-Code einer Aufzählung abrufen, ohne ihn einzuschließen?
Wenn eine Aufzählung in einem Aggregattyp gespeichert ist, möchten Sie diese möglicherweise in den Hash-Code des Typs aufnehmen (unter der Annahme eines typischen "multiplizieren mit Primzahlen"hash funktion). Wenn man nur anruftSomeEnum.GetHashCode()
Es scheint, dass die JIT die Instanz auch in Release-Builds boxt.
Das Profiling zeigt, dass ungefähr 10% der Zeit meiner Bewerbung mit Boxaufzählungen in verschiedenen verbracht hatGetHashCode
funktionen.
Mehrere Werttypen implementierenIEquatable
oder ähnliche Schnittstellen, die das Aufrufen ermöglichenGetHashCode
als statische Methode; das vermeidet das Boxen. AberSystem.Enum
liefert nicht die statische Überlastung vonGetHashCode
. Gibt es eine Möglichkeit, den Code zu berechnen, der verwendet werden sollte, aber das Boxen vermeidet?