Warum das Umwandeln von Int in einen ungültigen Enum-Wert KEINE Ausnahme auslöst
In C# sind Enums im Wesentlichen numerische Typen, die einen Satz benannter Werte abbilden zu ganzzahligen Konstanten. Ein faszinierender Aspekt von Enumerationen ist ihre Fähigkeit, jeden ganzzahligen Wert zu akzeptieren, einschließlich Werte, die außerhalb ihres definierten Bereichs liegen.
Wenn Sie auf eine Enumeration stoßen wie:
enum Beer { Bud = 10, Stella = 20, Unknown }
Sie können diese Umwandlung erwarten Eine Ganzzahl, die nicht 10, 20 oder für den Beer-Typ unbekannt ist, würde eine Ausnahme auslösen. Dies ist jedoch nicht der Fall. Das Umwandeln einer ungültigen Ganzzahl in einen Beer-Typ führt zur Zuweisung dieses Ganzzahlwerts zur Enum-Variablen.
Beachten Sie den folgenden Code:
int i = 50; var b = (Beer) i; Console.WriteLine(b.ToString());
Wenn Sie diesen Code ausführen, wird „ 50" zur Konsole. Der b-Variablen wird der ganzzahlige Wert 50 zugewiesen, was kein gültiger Enum-Wert für Beer ist. Die Besetzung löst jedoch keine Ausnahme aus.
Dieses Verhalten ist auf eine Entwurfsentscheidung zurückzuführen, die von den Erstellern des .NET Framework getroffen wurde. Aufzählungen werden durch andere Werttypen wie int, short oder byte unterstützt. Dadurch können sie jeden Wert akzeptieren, der für diese zugrunde liegenden Werttypen gültig ist.
Während dieses Verhalten in manchen Szenarien praktisch sein kann, kann es auch zu unerwarteten Ergebnissen führen, wenn Sie sich dessen nicht bewusst sind.
Über das Standardverhalten hinaus
Für Situationen, in denen Sie eine strengere Durchsetzung von Enum-Werten benötigen, gibt es solche Dienstprogramme und Erweiterungen, mit denen Sie nur die Verwendung definierter Enumerationswerte validieren und erzwingen können. Diese Tools können Ihnen helfen, potenzielle Fehler zu vermeiden und sicherzustellen, dass Ihre Enum-Variablen nur die beabsichtigten Werte enthalten.
Das obige ist der detaillierte Inhalt vonWarum löst das Umwandeln einer ungültigen Ganzzahl in eine Aufzählung in C# keine Ausnahme aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!