Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Enums er en nyttig datatype, som lader dig definere en liste over navngivne muligheder for en variabel. For eksempel, hvis du vil gemme hver dag i ugen, kan du bruge en enum til at repræsentere de gyldige værdier.

Enums gør din kode lettere at læse og skrive ved at opmuntre til meningsfulde navne og begrænse de værdier, du kan bruge. Det er ofte praktisk at bruge en switch-sætning til at håndtere de mulige værdier af en enum.

Du kan deklarere og bruge enums i mange programmeringssprog, inklusive C#.

Hvordan man erklærer en enum i C#

I C# vil du normalt dekalere enums på navnerumsniveau. For eksempel kan du i en C#-konsolapplikation erklære dine enums som klasseegenskaber. Du kan se et eksempel i dette GitHub repo.

klasseProgram
{
enum Ugedag {
Mandag,
Tirsdag,
Onsdag,
Torsdag,
Fredag,
Lørdag,
Søndag
}

statiskugyldigHoved(snor[] argumenter)
{

}
}

instagram viewer

Når du erklærer en enum, får hver option en heltalsværdi til at repræsentere sit indeks. Som standard har den første værdi i enum en indeksværdi på 0. For at ændre dette kan du angive dit eget indeks for det første element, når du erklærer enum:

enum Ugedag { 
mandag = 1,
Tirsdag,
Onsdag,
Torsdag,
Fredag,
Lørdag,
Søndag
}

I dette tilfælde indekset for det første element Mandag starter kl 1. Indekset for det næste element tirsdag vil være 2, og så videre.

Sådan får du adgang til en enum-værdi i C#

Der er mange forskellige måder, du kan få adgang til de værdier, der er gemt i enums. Den værdi, der returneres for hver mulighed i enummet, er indekset. For dette eksempel er værdien af Ugedag. Fredag er 5.

En måde du kan hente navnet på enumet er ved at bruge Enums. GetName() fungere. Dette får navnet på muligheden i indeks 5:

snor fredag ​​= Enum. HentNavn(type(Ugedag), Ugedag. Fredag);
Konsol. WriteLine("Gudskelov er det" + fredag ​​+ "!");
// Output = Gudskelov, det er fredag!

Du kan også få adgang til en værdi ved hjælp af dens indeks. I dette tilfælde vil værdien ved indeks 2 i Weekday enum (som er tirsdag) blive gemt i variablen:

Ugedag tirsdag = (Ugedag)2;
Konsol. WriteLine("Idag er " + tirsdag);
// Output = I dag er det tirsdag

Når du sender en enum som argument ind Konsol. WriteLine(), det toString() metode til enum kører automatisk. Dette betyder, at i stedet for at udskrive den sande numeriske værdi af enum, som er 5, vil den udskrive strengværdien, Fredag.

Konsol. WriteLine (Ugedag. Torsdag + "er det nye" + Ugedag. Fredag);
// Output = Torsdag er den nye fredag

Du kan også konvertere eller analysere datatypen ind i et heltal som en anden måde at gemme en options indeks på:

int mandagIndex = (int)Ugedag. Mandag;
Konsol. WriteLine (mandagsindeks);
// Output = 1

Sådan sammenlignes enums i C#

I C# kan du sammenligne enums ved hjælp af sammenligningsoperatorerne (==, !=, , <=, >=). Dette vil sammenligne den numeriske værdi af mulighederne.

Ugedag dag1 = Ugedag. Mandag;
Ugedag dag2 = Ugedag. Tirsdag;

hvis (dag1 == dag2)
{
Konsol. WriteLine("Dagene er de samme.");
}
andet
{
Konsol. WriteLine("Dagene er anderledes.");
}

I dette eksempel værdien af ​​Weekday. Mandag er 1, og værdien af ​​Weekday. Tirsdag er 2, så den 1 == 2 sammenligning mislykkes.

En anden måde at sammenligne enums på er Lige med() metode:

hvis (dag 1. Er lig med (dag 2))
{
Konsol. WriteLine("Dagene er de samme.");
}
andet
{
Konsol. WriteLine("Dagene er anderledes.");
}

Du kan også brug en C# switch-sætning at sammenligne en værdi med hver mulighed i en enum. I dette eksempel vil koden falde ind i onsdagssagen:

Weekday valueToCompare = Ugedag. Onsdag;

kontakt (valueToCompare)
{
sag Ugedag. Mandag:
Konsol. WriteLine("Jeg har brug for kaffe.");
pause;
sag Ugedag. Tirsdag:
Konsol. WriteLine("Jeg har brug for kaffe.");
pause;
sag Ugedag. Onsdag:
Konsol. WriteLine("Jeg har brug for kaffe.");
pause;
sag Ugedag. Torsdag:
Konsol. WriteLine("Torsdag er den nye fredag!");
pause;
sag Ugedag. Fredag:
Konsol. WriteLine("Gudskelov det er fredag!");
pause;
sag Ugedag. Lørdag:
Konsol. WriteLine("Min yndlingsdag!");
pause;
sag Ugedag. Søndag:
Konsol. WriteLine("Min anden yndlingsdag!");
pause;
Standard:
Konsol. WriteLine("Ugyldig ugedag.");
pause;
}

Sådan itereres over enums i C#

Du kan iterere over enums i C# ved hjælp af Enum. GetValues() metode, som returnerer en matrix af alle værdierne i enum. Dette kodestykke udskrives hver dag i ugen, inklusive mandag, tirsdag og så videre:

for hver (Hverdagsdag i Enum. GetValues(type(Ugedag)))
{
Konsol. WriteLine((int)dag); // For at udskrive indekset
Konsol. WriteLine (dag); // For at udskrive tekstværdien
}

Du kan også iterere over enum-værdier ved hjælp af Enum. GetNames() metode. Det returnerer en liste over strengværdier for at repræsentere navnene for enum-indstillingerne:

for hver (snor navn i Enum. GetNames(type(Ugedag)))
{
int indeks = (int)(Ugedag) Enum. Parse(type(Ugedag), navn);

Konsol. WriteLine (indeks); // For at udskrive indekset
Konsol. WriteLine (navn); // For at udskrive tekstværdien
}

Brug af Enums i C#

Du kan bruge enums i din kode for at gøre den mere læsbar og mindre udsat for fejl. Enums kan også være meget nyttige, når de parres med andre strukturer, såsom ordbøger.