„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Können Enums in C# mehrere Werte mit der gleichen zugrunde liegenden Konstante halten, und was sind die Auswirkungen?

Können Enums in C# mehrere Werte mit der gleichen zugrunde liegenden Konstante halten, und was sind die Auswirkungen?

Gepostet am 2025-03-24
Durchsuche:146

Can Enums in C# Hold Multiple Values with the Same Underlying Constant, and What are the Implications?

mehrere Werte in Enum -Deklarationen: Ein tieferes Eintauchen in die clr

Im Gegensatz zu Strukturen werden Enums als leichte Werttypen kategorisiert, die einen Satz genannter Konstanten darstellen. Die Frage stellt jedoch eine faszinierende Beobachtung, dass Enums anscheinend zulassen, dass mehrere Werte derselben Konstante zugeordnet werden.

, die sich mit den Implementierungsdetails der gemeinsamen Sprachlaufzeit (CLR) befassen, wird deutlich, dass Enums grundsätzlich den Strukturen ähnlich sind. Hinter den Kulissen leiten Enums aus der System -Basisklasse ab und sind im Wesentlichen strukturiert mit vordefinierten konstanten Werten.

Betrachten { Rot = 1,, Blau = 1,, Grün = 1 }

public enum Color
{
    Red = 1,
    Blue = 1,
    Green = 1
}

public struct color: System.enum { public const int rot = 1; public const int blau = 1; public const int green = 1; }

public struct Color : System.Enum
{
    public const int Red = 1;
    public const int Blue = 1;
    public const int Green = 1;
}

Sowohl Color1 als auch Color2 werden auf den roten Wert eingestellt, da die erste Wertzustimmung willkürlich ist. Technisch gesehen wird weder Color1 noch Color2 rot zugeordnet. Sie halten vielmehr den Wert 1. Aber wenn Sie angezeigt werden, wird rot das, was Sie sehen werden.

zusätzlich können Vergleichsoperationen zwischen nicht eindeutigen Enum-Werten überraschende Ergebnisse liefern:

// true (rot ist grün?) bool b = color.red == color.green;

Color color1 = (Color)1;
Color color2 = (Color)Enum.Parse(typeof(Color), "1");
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3