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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage