Enum
Aus Das Sopra Wiki
Mit Aufzählungen (in C#: enum) ist es möglich, mehrere konstante Werte zu gruppieren. Der Vorteil bei dieser Methode ist, dass die Konstanten in einem Datentyp gekapselt sind und somit als Klartext in einem Programm verwendet werden können.
Aufzählungen, oder enums werden folgendermaßen deklariert:
enum WeekDays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; [...] WeekDays day = WeekDays.Monday; if (day == WeekDays.Tuesday) Console.WriteLine("It's Tuesday!");
Intern wird zu jedem Eintrag der Enumeration ein Integer-Wert abgespeichert, der auch abgefragt werden kann. Es ist jedoch auch möglich, diesen Wert selbst zu vergeben:
enum Preise { Tomaten = 12, Brot = 10, Chili = 20, Eier = 4 };
Um im Programm alle Namen einer Enumeration zu ermitteln, kann die Klasse Enum verwendet werden:
string[] names; names = Enum.GetNames(typeof(Preise)); for (int i = 0; i < names.Length; i++) Console.WriteLine(names[i] + ": " + (int)Enum.Parse(typeof(Preise), names[i]));
Bitfelder
Bitfelder sind eine besondere Art von Aufzählungen. Sie werden dann benutzt, wenn nicht nur eine Eigenschaft einer Aufzählung zutreffen kann, sondern mehrere Eigenschaften zutreffen. Die Definition eines Bitfeldes erfolgt am einfachsten über Attribute. Zum Beispiel können Dateien die Eigenschaften Archiv, Versteckt, Nur Lesen und System haben. Eine Datei kann mehrere dieser Eigenschaften (bei Betriebssystemen ebenfalls Attribute genannt) gleichzeitig annehmen. In C# erfolgt die Definition und der Test dieser Eigenschaften folgendermaßen:
[Flags()] // Hier wird das C#-Attribut "Flags()" verwendet enum FileAttributes { Archive = 0, Hidden = 1, Readonly = 2, System = 4, All = Archive | Hidden | Readonly | System }; FileAttributes attrib = FileAttributes.Archive; attrib = attrib | System; // Fügt neben Archiv auch das Attribut System hinzu if ((attrib & FileAttributes.Hidden) = FileAttributes.Hidden) // Testet, ob attrib das Attribut Hidden beinhaltet Console.WriteLine("The file is hidden!");
Intern ist der Aufbau der Enumeration dann folgendermaßen:
Archive = 0000 Hidden = 0001 Readonly = 0010 System = 0100 All = 0111
Beim Test wird bitweise mit Hilfe des &-Operators geprüft, ob eine bestimmte Eigenschaft vorhanden ist (siehe Beispiel).
