Heim > Backend-Entwicklung > C++ > Warum löst das Umwandeln einer ungültigen Ganzzahl in eine Aufzählung in C# keine Ausnahme aus?

Warum löst das Umwandeln einer ungültigen Ganzzahl in eine Aufzählung in C# keine Ausnahme aus?

DDD
Freigeben: 2025-01-03 01:10:39
Original
432 Leute haben es durchsucht

Why Doesn't Casting an Invalid Integer to an Enum in C# Throw an Exception?

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
}
Nach dem Login kopieren

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());
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage