C# Felsorolás (Enumeration) példával
⚡ Okos összefoglaló
A C#-ban a felsorolások konstans integrálértékek elnevezett halmazát definiálják, például a hét napjait, ami megkönnyíti a kód olvasását és karbantartását. Az enum kulcsszó ezeket a fix konstansokat egyszer deklarálja, hogy a programban újra felhasználhatók legyenek.

C# felsorolás
A felsorolást bármely programozási nyelvben használjuk egy állandó értékkészlet meghatározására. Például a hét napjai felsorolásként definiálhatók, és a programban bárhol felhasználhatók. A C#-ban a felsorolást az 'enum' kulcsszó segítségével határozzuk meg.
Nézzünk egy példát arra, hogyan használhatjuk az 'enum' kulcsszót.
Példánkban a napok elnevezésű felsorolást fogjuk meghatározni, amely a hét napjainak tárolására szolgál. Mindegyik példa esetében csak a Program.cs fájl fő funkcióját módosítjuk.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { enum Days{Sun,Mon,tue,Wed,thu,Fri,Sat}; static void Main(string[] args) { Console.Write(Days.Sun); Console.ReadKey(); } } }
Code Magyarázat:-
- Az "enum" adattípus egy felsorolás deklarálására van megadva. A felsorolás neve Napok. A hét összes napja a felsorolás értékeként van megadva.
- Végül a console.write függvény a felsorolás egyik értékének megjelenítésére szolgál.
Ha a fenti kódot megfelelően beírta és a program sikeresen lefut, a következő kimenet jelenik meg.
output:
A kimenetből láthatja, hogy a felsorolás 'Sun' értéke megjelenik a konzolban.
Miért használjunk enumokat C#-ban?
Az enumerációk könnyebben olvashatóvá, biztonságosabbá és egyszerűbbé teszik a program karbantartását. Ahelyett, hogy megmagyarázhatatlan számokat, más néven mágikus számokat szórnának szét a kódban, egy felsorolás minden értéknek egy leíró nevet ad, amely kifejezi a célját.
- Olvashatóság: Egy olyan név, mint a Days.Fri, sokkal egyértelműbb, mint az 5-ös szám, így bárki, aki elolvassa a kódot, azonnal megérti a jelentését.
- Típusbiztonság: Egy enum típussal deklarált változó csak egy definiált tagot tartalmazhat, ami megakadályozza az érvénytelen értékek elcsúszását.ping be
- Karbantarthatóság: A kapcsolódó konstansok egy helyen találhatók, így egy érték hozzáadása vagy átnevezése az egész programot konzisztensen frissíti.
- Kötelező adatok: Az olyan keretrendszerek, mint a WPF és az ASP.NET, képesek egy enumerációt egy legördülő listához kötni, ami hasznossá teszi az enumerációkat felhasználói felületek létrehozásához.
Mivel a fordító minden értékadást ellenőrzi a megengedett tagokkal szemben, az enumerációk segítenek a hibák korai felismerésében, még a program futása előtt.
Egyéni értékek hozzárendelése egy C# enumhoz
Alapértelmezés szerint a C# az első enumerációs tagnak 0 értéket rendel, és minden további tagot eggyel növeli. A fenti Days felsorolásban a Sun egyenlő 0-val, a Mon egyenlő 1-gyel, a Sat pedig egyenlő 6-tal. Ezeket az alapértelmezett értékeket felülbírálhatjuk explicit számok hozzárendelésével.
- Explicit értékek: Az enum Level {Low = 1, Medium = 5, High = 10} írása minden tagot egy kiválasztott számra állít be az alapértelmezett sorrend helyett.
- Részleges hozzárendelés: Ha csak néhány tagnak rendelsz értéket, a fordító a következő tagok számozását az utolsó hozzárendelt értéktől kezdve végzi.
- Alapvető típus: Egy enumeráció alapértelmezés szerint int értékkel tárolja a tagjait, de a memória megtakarítása vagy a tartomány bővítése érdekében használhat bájt, rövid vagy hosszú értéket is.
Az egyéni értékek akkor hasznosak, ha a számoknak egy külső rendszerrel, például adatbáziskódokkal vagy protokollállandókkal kell megegyezniük, így az enum pontosan tükrözi a valós adatokat.
Hogyan konvertáljunk C# enumokat int, string és Flags típusúakká?
A C#-nak gyakran kell egy enumerálási értéket más formába állítania, például számként tárolnia vagy szövegből visszaolvasnia. Ezek az átalakítások néhány szabványos módon történnek.
- Enumból int-be: Egy explicit konvertálás, mint például az (int)Days.Wed, visszaadja az alapul szolgáló egész számot, ami hasznos tároláshoz vagy aritmetikai műveletekhez.
- int számot kell felsorolni: A másik irányba történő konvertálás, például (Days)3, egy számot visszaalakít a megfelelő enum taggá.
- Felsorolandó karakterlánc: Az Enum.Parse és a biztonságosabb Enum.TryParse egy olyan nevet, mint a „Fri”, Days.Fri taggá alakítanak anélkül, hogy érvénytelen szöveget dobnának.
- Enumerálás karakterlánccá: A ToString függvény bármely tagra történő meghívása visszaadja a nevét, így a Days.Sun.ToString() függvény a „Sun” értéket adja vissza megjelenítésre vagy naplózásra.
- Listázó tagok: Az Enum.GetValues és az Enum.GetNames függvények minden értéket vagy nevet visszaadnak, ami segít a menük kitöltésében vagy a bevitel validálásában.
Ha egy enumerációnak egy helyett több választási lehetőség kombinációját kell reprezentálnia, alkalmazza a Flags attribútumot, és adjon minden tagnak egy kettő hatványát, például 1, 2, 4 és 8. Ezután a tagokat kombinálhatja a bitenkénti VAGY operátorral, és tesztelheti egy adott opciót a HasFlag metódussal.
Ezek az átalakítási technikák lehetővé teszik, hogy egy enumeráció tisztán mozogjon az olvasható nevek, a tárolt számok és a kombinált jelzőkészletek között, keeping A program többi része típusbiztos és könnyen követhető.


