TOC

This article has been localized into Czech by the community.

Pokročilá témata:

Výčty (Enumerations)

Výčty jsou speciální sady pojmenovaných hodnot, které se všechny mapují na sadu čísel, obvykle celých čísel. Jsou velmi praktické, když chcete mít možnost vybírat ze sady konstantních hodnot, a protože každá možná hodnota souvisí s nějakým číslem, mohou být použity v široké škále situací. Jak uvidíte v našem příkladu, výčty jsou definovány nad třídami, uvnitř našeho jmenného prostoru. To znamená, že můžeme výčty používat ze všech tříd ve stejném jmenném prostoru.

Zde je příklad jednoduchého výčtu, který ukazuje, o co jde.

public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

Všechny tyto možné hodnoty odpovídají nějakému číslu. Pokud je konkrétně nenastavíme, první hodnota je rovna 0, další 1 a tak dále. Následující kód to dokáže, a také ukáže, jak používáme jednu z možných hodnot z výčtu:

using System;

namespace ConsoleApplication1
{
    public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

    class Program
    {
        static void Main(string[] args)
        {
            Days day = Days.Monday;
            Console.WriteLine((int)day);
            Console.ReadLine();
        }
    }
}

Výstup bude nula, protože hodnota Pondělí se přímo mapuje na číslo nula. Samozřejmě to můžeme změnit - změňte řádek na něco takového:

public enum Days { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

Pokud náš kód spustíte znovu, uvidíte, že nyní Pondělí odpovídá číslu 1 místo 0. Všechny ostatní hodnoty budou také o jedno číslo vyšší. Můžete přiřadit i jiná čísla ostatním hodnotám. Díky přímému mapování na číslo můžete k získání odpovídající hodnoty z výčtu použít i čísla, například takto:

Days day = (Days)5;
Console.WriteLine(day);
Console.ReadLine();

Další skvělou vlastností výčtů je možnost přiřadit k hodnotám také jejich řetězcovou reprezentaci. Změňte výše uvedený příklad na něco takového:

static void Main(string[] args)
{
    string[] values = Enum.GetNames(typeof(Days));
    foreach(string s in values)
        Console.WriteLine(s);
    
    Console.ReadLine();
}

Třída Enum obsahuje řadu užitečných metod pro práci s výčty.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!