Wyliczenia

pRoGi

Typ wyliczeniowy (ang. enumeration) jest bardzo ważnym typem danych na platformie .NET, wiele stałych w .NET Framework zdefinowanych jest jako wyliczenie. Klasa wyliczeniowa (Enum), zdefiniowana jest w przestrzni nazw System (System.Enum) i wygląda następująco:

public abstract class Enum : IComparable, IFormattable,
   IConvertible

Do utworzenia typu wyliczeniowego używamy słowa kluczowego Enum. Przykładowe wyliczenie może wyglądać następująco:

public enum Oceny
{
     mierna = 2,
     dostateczna,
     dobra,
     bardzo_dobra,
}

Ktoś może spytać dlaczego, zainicjowana została tylko pierwsza zmienna, otóż każde kolejne wyliczenie dostaje numer o jeden wyższy od poprzednika (domyślnie wyliczenie zaczyna się od 0). Wyliczenie może także być zdefiniowane następująco:

public enum Oceny
{   
     mierna,
     dostateczna = 3,
     dobra,
     bardzo_dobra = 6,
}

W powyższym przypadku pierwszy element bedzie miał wartośc 0, drugi 3, trzeci 4 i ostatni 6.
Do wyliczenia można odwołać się na dwa sposoby. Jeżeli chcemy otrzymać nazwy elementów to musimy poprzedzić je nazwą typu wyliczeniowego:

Oceny.dobra; // zwróci łańcuch znaków "dobra"

W przypadku gdy chcemy otrzymać numer elementu to musi, powyższe odwołanie, rzutować na liczbę całkowitą, ponieważ elementy wyliczenia są zawsze typu całkowitego (domyślnie Int), wygląda to następująco:

(int) Oceny.dobra; // zwróci liczbę 4

Domyślnie elementy typu wyliczeniowego są typu całkowitego (Int) aczkolwiek w razie potrzeby możemy zawsze zmienić ten typ:

enum Foo : long { Min = -1000000000, Max = 100000000 };

Na elementach typu wyliczeniowego można operować używając operatorów bitowych:

using System;

namespace FooApp
{
    [Flags]
    enum Days { Pn, Wt, Śr, Czw, Pt, So, Nd };

    class Program
    {
        static void Main(string[] args)
        {
            Days MyDays = Days.Nd | Days.So;
            
            Console.WriteLine(MyDays);
            Console.WriteLine((int)MyDays);
            Console.Read();
        }
    }
}

W takim przypadku, na ekranie konsoli zostanie wyświetlone:

Wt, Nd
7

W razie usunięcia atrybutu [Flags], na ekranie konsoli wyświetlony zostanie następujący wynik:

7 7

4 komentarzy

Nie wiem czy ja się nie mylę ale chyba nie może być przecinków kończących w pierwszych dwóch enumach zdefiniowanych w niniejszym artykule... jeśli sie mylę to przepraszam.

O już widzę poprawione :p

Myślę, że ten kod w definicji "Zapamiętaj" () można by jakoś przerobić, tj. usunąć znacznik i zastąpić tekstem, bo nie idzie się aż tak domyślić (dopiero po spojrzeniu do źródła), czy ten kod jest w niej, a właściwie kiedy się ona kończy :)
Albo inaczej: dodać tam jaki tekst ;)