
Enum to typ wyliczeniowy, który zawiera w sobie deklarację listy wartości stałych. Jego domyślnym typem jest integer, a wartość domyślna pierwszego elementu wynosi 0 i przy każdym kolejnym elemencie jest zwiększana o 1.
Deklarację enum’a rozpoczyna się od słowa kluczowego enum oraz nazwy, która go opisuje. Następnie w nawiasach klamrowych wypisuje się elementy, oddzielając je przecinkami:
enum EnumPrzyklad
{
enum01,
enum02,
enum03,
enum04
}
Elementy poszczególnych enum’ów możemy wywołać za pomocą odwołania się do nazwy jaką nadaliśmy i po kropce wybrać interesujący nas element (z pomoca przychodzi IntelliSense, który podpowiada nam, jakie elementy dodaliśmy do naszego zbioru). Możemy również przekonwertować wybrany element na domyślną wartość, pisząc wcześniej w nawiasach (int):
static void Main()
{
Console.WriteLine(EnumPrzyklad.enum01);
Console.WriteLine((int)EnumPrzyklad.enum04);
Console.ReadLine();
}
Output powyższego kodu będzie wyglądać następująco:
To ja dodam od siebie, że z tą informacją, że wartości enuma mogą się powtarzać to mnie zagięło. Ale z drugiej strony, nigdy nie byłem świadkiem takiego przypadku użycia i nie potrafię sobie wyobrazić przypadku użycia. Wg. mnie to sprawiłoby tylko tyle, że kod zacząłby być mniej czytelny, różne stałe wyliczeniowe z tej samej grupy miałby te same wartości.
Dodałbym jeszcze, że enum to tak naprawdę const int na sterydach i w kodzie IL odwołanie do enuma zastępowane jest jego wartością. Fakt ten może powodować “ciekawe” zachowanie kiedy przedefiniujemy enuma ale nie przekompilujemy biblioteki, która go używała.