A hozzád hasonló olvasók támogatják a MUO-t. Amikor a webhelyünkön található linkek használatával vásárol, társult jutalékot kaphatunk. Olvass tovább.

Az enumok hasznos adattípusok, amelyek lehetővé teszik egy változó elnevezett opcióinak listájának meghatározását. Például, ha a hét minden napját el szeretné tárolni, használhat egy felsorolást az érvényes értékek megjelenítésére.

Az enumok megkönnyítik a kódok olvasását és írását az értelmes nevek bátorításával és a használható értékek korlátozásával. Gyakran célszerű egy switch utasítást használni az enum lehetséges értékeinek kezelésére.

Számos programozási nyelven deklarálhat és használhat enumokat, beleértve a C#-t is.

Hogyan deklaráljunk enumot C#-ban

A C# nyelven általában a névtér szintjén kell felcímkézni a sorszámokat. Például egy C# konzolalkalmazásban az enumokat osztálytulajdonságként deklarálhatja. Ebben megtekinthet egy példát GitHub repó.

osztályProgram
{
enum hétköznap {
Hétfő,
Kedd,
Szerda,
Csütörtök,
Péntek,
Szombat,
vasárnap
}

statikusüres(húr[] args)
{

}
}

Amikor deklarál egy enumot, minden beállítás egy egész értéket kap, amely az indexét képviseli. Alapértelmezés szerint az enum első értékének indexértéke 0. Ennek megváltoztatásához megadhatja saját indexét az első elemhez az enum deklarálásakor:

enum hétköznap { 
hétfő = 1,
Kedd,
Szerda,
Csütörtök,
Péntek,
Szombat,
vasárnap
}

Ebben az esetben az első elem indexe hétfő kezdődik 1. A következő elem indexe kedd lesz 2, stb.

Hogyan lehet elérni egy Enum értéket a C# nyelven

Számos különböző módon érheti el az enumokban tárolt értékeket. Az enum minden egyes opciójához visszaadott érték az index. Ebben a példában az értéke Hétköznap. péntek van 5.

Az enum nevének lekérésének egyik módja a Enums. GetName() funkció. Ez megkapja az 5. index opciójának nevét:

húr péntek = Enum. GetName(típusú(hétköznap), hétköznap. Péntek);
Konzol. WriteLine(– Hála Istennek, + péntek + "!");
// Output = Hála Istennek, péntek van!

Egy értéket az indexével is elérhet. Ebben az esetben a Hétköznap enum 2. indexénél lévő érték (ami kedd) a változóban tárolódik:

hétköznap kedd = (hétköznap)2;
Konzol. WriteLine("ma van" + kedd);
// Kimenet = Ma kedd van

Amikor egy enumot adsz át érvként be Konzol. WriteLine(), a toString() Az enum metódusa automatikusan lefut. Ez azt jelenti, hogy az enum valódi számértékének kinyomtatása helyett, amely az 5, kiírja a karakterlánc értékét, péntek.

Konzol. WriteLine (hétköznap. csütörtök + "az új" + Hétköznap. Péntek);
// Kimenet = csütörtök az új péntek

Te is konvertálja vagy elemzi az adattípust egész számmá az opció indexének másik módjaként:

int hétfőIndex = (int)Hétköznap. Hétfő;
Konzol. WriteLine (hétfőIndex);
// Kimenet = 1

Hogyan hasonlítsuk össze az enumokat C#-ban

A C#-ban az összehasonlító operátorok (==, !=, , <=, >=) segítségével össze lehet hasonlítani a felsorolásokat. Ez összehasonlítja az opciók számértékét.

Weekday day1 = Weekday. Hétfő;
Weekday day2 = Weekday. Kedd;

ha (1. nap == 2. nap)
{
Konzol. WriteLine(– A napok ugyanazok.);
}
más
{
Konzol. WriteLine(– Mások a napok.);
}

Ebben a példában a Weekday értéke. A hétfő 1, és a Weekday értéke. Kedd 2, tehát a 1 == 2 az összehasonlítás sikertelen lesz.

Az enumok összehasonlításának másik módja a egyenlő () módszer:

ha (nap1.Egyenlő (day2))
{
Konzol. WriteLine(– A napok ugyanazok.);
}
más
{
Konzol. WriteLine(– Mások a napok.);
}

Te is használjon C# switch utasítást hogy összehasonlítson egy értéket a felsorolásban szereplő egyes opciókkal. Ebben a példában a kód a szerda esetbe esik:

Weekday valueToCompare = Hétnap. Szerda;

kapcsoló (Összehasonlítandó érték)
{
ügy Hétköznap. Hétfő:
Konzol. WriteLine(– Kávé kell.);
szünet;
ügy Hétköznap. Kedd:
Konzol. WriteLine(– Kávé kell.);
szünet;
ügy Hétköznap. Szerda:
Konzol. WriteLine(– Kávé kell.);
szünet;
ügy Hétköznap. Csütörtök:
Konzol. WriteLine("Csütörtök az új péntek!");
szünet;
ügy Hétköznap. Péntek:
Konzol. WriteLine("Hál 'Istennek péntek van!");
szünet;
ügy Hétköznap. Szombat:
Konzol. WriteLine(– A kedvenc napom!);
szünet;
ügy Hétköznap. Vasárnap:
Konzol. WriteLine(– A másik kedvenc napom!);
szünet;
alapértelmezett:
Konzol. WriteLine(– A hét érvénytelen napja.);
szünet;
}

Az enumok iterálása C#-ban

C# nyelven iterálhat enumok felett a Enum. GetValues() metódus, amely az enum összes értékének tömbjét adja vissza. Ez a kódrészlet a hét minden napján kinyomtatásra kerül, beleértve a hétfőt, keddet és így tovább:

az egyes (Hétköznap ban ben Enum. GetValues(típusú(Hétköznap)))
{
Konzol. WriteLine((int)nap); // Az index kinyomtatásához
Konzol. WriteLine (nap); // A szöveges érték kinyomtatása
}

Az enum értékeket a következővel is iterálhatja Enum. GetNames() módszer. Visszaadja a karakterláncértékek listáját, amelyek az enum opciók neveit képviselik:

az egyes (húr név ban ben Enum. GetNames(típusú(Hétköznap)))
{
int index = (int)(Hétköznap) Enum. Elemzés(típusú(hétköznap), név);

Konzol. WriteLine (index); // Az index kinyomtatásához
Konzol. WriteLine (név); // A szöveges érték kinyomtatása
}

Enums használata C#-ban

Használhat enumokat a kódjában, hogy olvashatóbbá tegye, és kevésbé legyen kitéve a hibáknak. Az enumok akkor is nagyon hasznosak lehetnek, ha más szerkezetekkel, például szótárakkal párosítják.