Ints ohne Ausnahmen in ungültige Enum-Werte umwandeln
Wenn in C# eine Ganzzahl in eine Enum umgewandelt wird, die keinem definierten Wert entspricht, Das Ergebnis ist keine Ausnahme, sondern ein Wert, der außerhalb des definierten Bereichs liegt. Dieses Verhalten ist beabsichtigt und ergibt sich aus dem unterstützenden Werttyp von Aufzählungen.
Aufzählungswertspeicherung
Aufzählungen werden implizit durch einen Werttyp unterstützt, typischerweise eine Ganzzahl. Dadurch können sie diskrete Werte darstellen und in Operationen wie Vergleichen und Berechnungen verwendet werden. Da der zugrunde liegende Werttyp jede Ganzzahl speichern kann, können Aufzählungen andere Werte als die explizit als benannte Mitglieder definierten verarbeiten.
Ganzzahlen in Aufzählungen umwandeln
Beim Umwandeln einer Ganzzahl in Bei einer Aufzählung ist der resultierende Wert die Darstellung der Ganzzahl im zugrunde liegenden Werttyp. Dies bedeutet, dass die Ganzzahl auch dann, wenn sie keinem benannten Mitglied der Aufzählung entspricht, dennoch in den Aufzählungstyp umgewandelt und ihr der Ganzzahlwert zugewiesen wird.
Beispiel
Berücksichtigen Sie die folgende Aufzählung:
enum Beer { Bud = 10, Stella = 20, Unknown }
Beim Umwandeln der Ganzzahl 50 in das Bier enum:
int i = 50; var b = (Beer) i; Console.WriteLine(b.ToString());
Das Ergebnis ist „50“, was darauf hinweist, dass die Ganzzahl 50 als Wert der Aufzählung gespeichert wurde. Diese Ausgabe mag unerwartet erscheinen, ist jedoch eine Folge der zugrunde liegenden ganzzahligen Speicherung von Aufzählungen.
Begründung dieses Verhaltens
Der Grund für dieses Verhalten ist, dass es Folgendes bietet Flexibilität bei Operationen mit Aufzählungen. Es ermöglicht die Darstellung von Werten, die nicht explizit in der Aufzählung definiert sind, was in Szenarien wie dem Speichern von Flags oder der Darstellung von Wertebereichen nützlich sein kann.
Beispiel
Stellen Sie sich zum Beispiel eine Aufzählung vor, die Wochentage darstellt:
enum DayOfWeek { Monday = 1, Tuesday = 2, Wednesday = 3, Unknown }
Wenn eine Funktion einen beliebigen Wochentag als Argument akzeptieren muss, Es kann Ganzzahlen in die DayOfWeek-Enumeration umwandeln und Werte verarbeiten, auch wenn sie nicht explizit definiert sind. Dieser Ansatz bietet mehr Flexibilität als die Definition spezifischer benannter Elemente für jeden möglichen Wert.
Zusätzliche Überlegungen
Dieses Verhalten kann zwar unter bestimmten Umständen von Vorteil sein, ist es aber auch ist Vorsicht geboten. Entwickler sollten sich darüber im Klaren sein, dass die Umwandlung von Ganzzahlen in Aufzählungen zu unerwarteten Werten führen kann, wenn sie nicht sorgfältig gehandhabt wird. Um die Gültigkeit von Enumerationswerten sicherzustellen, sollten Sie Validierungsmethoden verwenden oder alle erwarteten Werte innerhalb der Enumeration explizit definieren.
Das obige ist der detaillierte Inhalt vonWarum löst das Umwandeln einer Ganzzahl in einen ungültigen Enum-Wert in C# keine Ausnahme aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!