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");
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