Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Enumy sú užitočným dátovým typom, ktorý vám umožňuje definovať zoznam pomenovaných možností pre premennú. Napríklad, ak chcete uložiť každý deň v týždni, môžete použiť enum na vyjadrenie platných hodnôt.

Enumy uľahčujú čítanie a zápis vášho kódu tým, že podporujú zmysluplné názvy a obmedzujú hodnoty, ktoré môžete použiť. Na spracovanie možných hodnôt enum je často vhodné použiť príkaz switch.

Výčty môžete deklarovať a používať v mnohých programovacích jazykoch vrátane C#.

Ako deklarovať Enum v C#

V C# zvyčajne odstránite enumy na úrovni menného priestoru. Napríklad v konzolovej aplikácii C# môžete svoje enumy deklarovať ako vlastnosti triedy. Príklad si môžete pozrieť v tomto Úložisko GitHub.

triedaProgram
{
enum Pracovný deň {
pondelok,
utorok,
streda,
štvrtok,
piatok,
sobota,
nedeľu
}

statickéneplatnéHlavná(reťazec[] tvrdí)
{

}
}

Keď deklarujete enum, každá možnosť získa celočíselnú hodnotu, ktorá predstavuje jej index. V predvolenom nastavení má prvá hodnota v zozname hodnotu indexu 0. Ak to chcete zmeniť, môžete zadať svoj vlastný index pre prvý prvok, keď deklarujete enum:

instagram viewer

enum Pracovný deň { 
pondelok = 1,
utorok,
streda,
štvrtok,
piatok,
sobota,
nedeľu
}

V tomto prípade index prvého prvku pondelok začína o 1. Index ďalšieho prvku utorok bude 2, a tak ďalej.

Ako získať prístup k hodnote Enum v C #

Existuje mnoho rôznych spôsobov, ako môžete získať prístup k hodnotám uloženým v enumoch. Hodnota vrátená pre každú možnosť v zozname je index. Pre tento príklad hodnota Pracovný deň. piatok je 5.

Jedným zo spôsobov, ako môžete získať názov enum, je použitie Enums. GetName() funkciu. Toto získa názov možnosti na indexe 5:

reťazec piatok = Enum. GetName(Typ(Pracovný deň), Pracovný deň. piatok);
Konzola. WriteLine("Vďaka bohu, že" + piatok + "!");
// Výstup = Vďaka Bohu, že je piatok!

K hodnote môžete pristupovať aj pomocou jej indexu. V tomto prípade sa hodnota na indexe 2 v zozname pracovných dní (čo je utorok) uloží do premennej:

Pracovný deň utorok = (pracovný deň)2;
Konzola. WriteLine("Dnes je " + utorok);
// Výstup = Dnes je utorok

Keď prejdete enum ako argument do Konzola. WriteLine(), natiahnuť() metóda pre enum sa spustí automaticky. To znamená, že namiesto vytlačenia skutočnej číselnej hodnoty enum, ktorá je 5, vypíše hodnotu reťazca, piatok.

Konzola. WriteLine (deň v týždni. štvrtok + "je nový" + Pracovný deň. piatok);
// Výstup = Štvrtok je nový piatok

Môžete tiež konvertovať alebo analyzovať typ údajov na celé číslo ako ďalší spôsob uloženia indexu možnosti:

int mondayIndex = (int) Pracovný deň. pondelok;
Konzola. WriteLine (mondayIndex);
// Výstup = 1

Ako porovnávať enumy v C#

V C# môžete porovnávať zoznamy pomocou porovnávacích operátorov (==, !=, , <=, >=). Tým sa porovná číselná hodnota možností.

Deň v týždni 1 = deň v týždni. pondelok;
Deň v týždni 2 = Deň v týždni. utorok;

ak (deň 1 == deň 2)
{
Konzola. WriteLine("Dni sú rovnaké.");
}
inak
{
Konzola. WriteLine("Dni sú iné.");
}

V tomto príklade je to hodnota dňa v týždni. Pondelok je 1 a hodnota dňa v týždni. Utorok je 2, takže 1 == 2 porovnanie zlyhá.

Ďalším spôsobom porovnávania enumov je Rovná sa() metóda:

ak (deň 1. Rovná sa (deň 2))
{
Konzola. WriteLine("Dni sú rovnaké.");
}
inak
{
Konzola. WriteLine("Dni sú iné.");
}

Môžete tiež použite príkaz C# switch na porovnanie hodnoty s každou možnosťou v zozname. V tomto príklade bude kód spadať do stredu prípadu:

Hodnota dňa v týždniToCompare = Deň v týždni. streda;

prepínač (valueToCompare)
{
prípad Pracovný deň. pondelok:
Konzola. WriteLine("Potrebujem kávu.");
prestávka;
prípad Pracovný deň. utorok:
Konzola. WriteLine("Potrebujem kávu.");
prestávka;
prípad Pracovný deň. streda:
Konzola. WriteLine("Potrebujem kávu.");
prestávka;
prípad Pracovný deň. štvrtok:
Konzola. WriteLine("Štvrtok je nový piatok!");
prestávka;
prípad Pracovný deň. piatok:
Konzola. WriteLine("Ďakujem bohu, že je piatok!");
prestávka;
prípad Pracovný deň. sobota:
Konzola. WriteLine("Môj obľúbený deň!");
prestávka;
prípad Pracovný deň. nedeľa:
Konzola. WriteLine("Môj ďalší obľúbený deň!");
prestávka;
predvolená:
Konzola. WriteLine("Neplatný deň v týždni.");
prestávka;
}

Ako iterovať cez enumy v C#

Výčty v C# môžete iterovať pomocou Enum. GetValues() metóda, ktorá vracia pole všetkých hodnôt v enum. Tento útržok kódu sa vytlačí každý deň v týždni vrátane pondelka, utorka atď.:

pre každý (Deň v týždni v Enum. GetValues(Typ(Pracovný deň)))
{
Konzola. WriteLine((int)deň); // Tlač indexu
Konzola. WriteLine (deň); // Vytlačí textovú hodnotu
}

Môžete tiež iterovať cez enum hodnoty pomocou Enum. GetNames() metóda. Vráti zoznam hodnôt reťazcov, ktoré reprezentujú názvy pre možnosti enum:

pre každý (reťazec názov v Enum. GetNames(Typ(Pracovný deň)))
{
int index = (int)(Deň v týždni) Enum. Analyzovať(Typ(Deň v týždni), meno);

Konzola. WriteLine (index); // Tlač indexu
Konzola. WriteLine (meno); // Vytlačí textovú hodnotu
}

Používanie enumov v C#

Vo svojom kóde môžete použiť enumy, aby bol čitateľnejší a menej náchylný na chyby. Enumy môžu byť tiež veľmi užitočné, keď sú spárované s inými štruktúrami, ako sú napríklad slovníky.