Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Enums är en användbar datatyp som låter dig definiera en lista med namngivna alternativ för en variabel. Om du till exempel vill lagra varje dag i veckan kan du använda en uppräkning för att representera de giltiga värdena.

Enums gör din kod lättare att läsa och skriva genom att uppmuntra meningsfulla namn och begränsa de värden du kan använda. Det är ofta bekvämt att använda en switch-sats för att hantera de möjliga värdena för en enum.

Du kan deklarera och använda enums i många programmeringsspråk, inklusive C#.

Hur man deklarerar en Enum i C#

I C# kommer du vanligtvis att dekalera uppräkningar på namnområdesnivå. Till exempel, i en C#-konsolapplikation kan du deklarera dina enums som klassegenskaper. Du kan se ett exempel i detta GitHub repo.

klassProgram
{
uppräkning veckodag {
måndag,
tisdag,
onsdag,
torsdag,
Fredag,
lördag,
söndag
}

statisktomhetMain(sträng[] args)
{

}
}

instagram viewer

När du deklarerar en enum får varje alternativ ett heltalsvärde för att representera dess index. Som standard har det första värdet i enummet ett indexvärde på 0. För att ändra detta kan du ange ditt eget index för det första elementet när du deklarerar enum:

uppräkning veckodag { 
måndag = 1,
tisdag,
onsdag,
torsdag,
Fredag,
lördag,
söndag
}

I det här fallet indexet för det första elementet måndag börjar kl 1. Indexet för nästa element tisdag kommer vara 2, och så vidare.

Hur man får åtkomst till ett Enum-värde i C#

Det finns många olika sätt du kan komma åt värdena som lagras i enums. Värdet som returneras för varje alternativ i uppräkningen är indexet. För det här exemplet är värdet på Veckodag. fredag är 5.

Ett sätt du kan hämta namnet på enumet är genom att använda Enums. Hämta namn() fungera. Detta får namnet på alternativet i index 5:

sträng fredag ​​= Enum. Hämta namn(sorts(Vardag), Veckodag. Fredag);
Trösta. Skrivlinje("Tack och lov att det är" + fredag ​​+ "!");
// Output = Tack gode gud att det är fredag!

Du kan också komma åt ett värde med hjälp av dess index. I det här fallet kommer värdet vid index 2 i Weekday enum (som är tisdag) att lagras i variabeln:

veckodag tisdag = (veckodag)2;
Trösta. Skrivlinje("Idag är " + tisdag);
// Output = Idag är det tisdag

När du skickar en uppräkning som argument till Trösta. Skrivlinje(), den att stränga() metod för uppräkningen körs automatiskt. Detta innebär att istället för att skriva ut det sanna numeriska värdet av enum, som är 5, kommer det att skriva ut strängvärdet, fredag.

Trösta. WriteLine (veckodag. Torsdag + "är det nya" + Veckodag. Fredag);
// Output = Torsdag är den nya fredagen

Du kan också konvertera eller analysera datatypen till ett heltal som ett annat sätt att lagra ett alternativs index:

int måndagIndex = (int)Veckodag. måndag;
Trösta. WriteLine (mondayIndex);
// Output = 1

Hur man jämför enums i C#

I C# kan du jämföra enums med hjälp av jämförelseoperatorerna (==, !=, , <=, >=). Detta kommer att jämföra det numeriska värdet av alternativen.

Weekday day1 = Weekday. måndag;
Weekday day2 = Weekday. tisdag;

om (dag 1 == dag 2)
{
Trösta. Skrivlinje("Dagarna är desamma.");
}
annan
{
Trösta. Skrivlinje("Dagarna är annorlunda.");
}

I det här exemplet är värdet på Weekday. Måndag är 1 och värdet på Weekday. Tisdag är 2, så den 1 == 2 jämförelse kommer att misslyckas.

Ett annat sätt att jämföra enums är Lika() metod:

om (dag 1. Lika med (dag 2))
{
Trösta. Skrivlinje("Dagarna är desamma.");
}
annan
{
Trösta. Skrivlinje("Dagarna är annorlunda.");
}

Du kan också använd en C# switch-sats att jämföra ett värde mot varje alternativ i en uppräkning. I det här exemplet kommer koden att falla in i onsdagsfallet:

Weekday valueToCompare = Weekday. onsdag;

växla (valueToCompare)
{
fall Veckodag. Måndag:
Trösta. Skrivlinje("Jag behöver kaffe.");
ha sönder;
fall Veckodag. tisdag:
Trösta. Skrivlinje("Jag behöver kaffe.");
ha sönder;
fall Veckodag. Onsdag:
Trösta. Skrivlinje("Jag behöver kaffe.");
ha sönder;
fall Veckodag. Torsdag:
Trösta. Skrivlinje("Torsdag är den nya fredagen!");
ha sönder;
fall Veckodag. Fredag:
Trösta. Skrivlinje("Tack och lov att det är fredag!");
ha sönder;
fall Veckodag. Lördag:
Trösta. Skrivlinje("Min favoritdag!");
ha sönder;
fall Veckodag. Söndag:
Trösta. Skrivlinje("Min andra favoritdag!");
ha sönder;
standard:
Trösta. Skrivlinje("Ogiltig veckodag.");
ha sönder;
}

Hur man itererar över uppräkningar i C#

Du kan iterera över enums i C# med hjälp av Enum. GetValues() metod, som returnerar en matris med alla värden i enum. Det här kodavsnittet skrivs ut varje dag i veckan, inklusive måndag, tisdag och så vidare:

för varje (Vardagsdag i Enum. GetValues(sorts(Veckodag)))
{
Trösta. Skrivlinje((int)dag); // För att skriva ut indexet
Trösta. WriteLine (dag); // För att skriva ut textvärdet
}

Du kan också iterera över enumvärden med hjälp av Enum. GetNames() metod. Den returnerar en lista med strängvärden för att representera namnen för enumalternativen:

för varje (sträng namn i Enum. GetNames(sorts(Veckodag)))
{
int index = (int)(Vardag) Enum. Analysera(sorts(Vardag), namn);

Trösta. WriteLine (index); // För att skriva ut indexet
Trösta. WriteLine (namn); // För att skriva ut textvärdet
}

Använda Enums i C#

Du kan använda enums i din kod för att göra den mer läsbar och mindre benägen för buggar. Uppräkningar kan också vara mycket användbara när de paras ihop med andra strukturer, till exempel ordböcker.