Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Enums er en nyttig datatype som lar deg definere en liste over navngitte alternativer for en variabel. For eksempel, hvis du ønsker å lagre hver dag i uken, kan du bruke en enum for å representere de gyldige verdiene.

Enums gjør koden din enklere å lese og skrive ved å oppmuntre til meningsfulle navn og begrense verdiene du kan bruke. Det er ofte praktisk å bruke en switch-setning for å håndtere de mulige verdiene til en enum.

Du kan deklarere og bruke enums i mange programmeringsspråk, inkludert C#.

Hvordan erklære en Enum i C#

I C# vil du vanligvis dekalere enums på navneområdenivå. For eksempel, i en C#-konsollapplikasjon, kan du erklære enumsene dine som klasseegenskaper. Du kan se et eksempel i denne GitHub repo.

klasseProgram
{
enum Ukedag {
Mandag,
Tirsdag,
Onsdag,
Torsdag,
Fredag,
Lørdag,
søndag
}

statisktomromHoved(streng[] argumenter)
{

}
}

instagram viewer

Når du erklærer en enum, får hvert alternativ en heltallsverdi for å representere indeksen. Som standard har den første verdien i enum en indeksverdi på 0. For å endre dette kan du spesifisere din egen indeks for det første elementet når du erklærer enum:

enum Ukedag { 
mandag = 1,
Tirsdag,
Onsdag,
Torsdag,
Fredag,
Lørdag,
søndag
}

I dette tilfellet, indeksen til det første elementet mandag starter kl 1. Indeksen til neste element tirsdag vil være 2, og så videre.

Hvordan få tilgang til en Enum-verdi i C#

Det er mange forskjellige måter du kan få tilgang til verdiene som er lagret i enums. Verdien som returneres for hvert alternativ i enumen er indeksen. For dette eksemplet er verdien av Ukedag. fredag er 5.

En måte du kan hente navnet på enumet er ved å bruke Enums. GetName() funksjon. Dette får navnet på alternativet i indeks 5:

streng fredag ​​= Enum. GetName(type(Ukedag), Ukedag. Fredag);
Konsoll. WriteLine("Takk gud at det er" + fredag ​​+ "!");
// Output = Takk Gud for at det er fredag!

Du kan også få tilgang til en verdi ved å bruke dens indeks. I dette tilfellet vil verdien ved indeks 2 i ukedagsopptellingen (som er tirsdag) lagres i variabelen:

Ukedag tirsdag = (ukedag)2;
Konsoll. WriteLine("Idag er " + tirsdag);
// Output = I dag er det tirsdag

Når du sender en enum som argument inn Konsoll. WriteLine(), den toString() metoden for enum kjøres automatisk. Dette betyr at i stedet for å skrive ut den sanne numeriske verdien av enum, som er 5, vil den skrive ut strengverdien, fredag.

Konsoll. WriteLine (ukedag. Torsdag + "er det nye" + Ukedag. Fredag);
// Output = Torsdag er den nye fredagen

Du kan også konvertere eller analysere datatypen inn i et heltall som en annen måte å lagre et alternativs indeks på:

int mandagIndex = (int)Ukedag. Mandag;
Konsoll. WriteLine (mondayIndex);
// Utgang = 1

Hvordan sammenligne enums i C#

I C# kan du sammenligne enums ved å bruke sammenligningsoperatorene (==, !=, , <=, >=). Dette vil sammenligne den numeriske verdien av alternativene.

Ukedag dag1 = Ukedag. Mandag;
Ukedag dag2 = Ukedag. Tirsdag;

hvis (dag1 == dag2)
{
Konsoll. WriteLine("Dagene er de samme.");
}
ellers
{
Konsoll. WriteLine("Dagene er annerledes.");
}

I dette eksemplet er verdien av Weekday. Mandag er 1, og verdien av ukedag. Tirsdag er 2, så den 1 == 2 sammenligning vil mislykkes.

En annen måte å sammenligne enums på er Er lik() metode:

hvis (dag 1. Er lik (dag 2))
{
Konsoll. WriteLine("Dagene er de samme.");
}
ellers
{
Konsoll. WriteLine("Dagene er annerledes.");
}

Du kan også bruk en C# switch-setning å sammenligne en verdi mot hvert alternativ i en opptelling. I dette eksemplet vil koden falle inn i onsdagssaken:

Weekday valueToCompare = Ukedag. Onsdag;

bytte om (valueToCompare)
{
sak Ukedag. Mandag:
Konsoll. WriteLine("Jeg trenger kaffe.");
gå i stykker;
sak Ukedag. Tirsdag:
Konsoll. WriteLine("Jeg trenger kaffe.");
gå i stykker;
sak Ukedag. Onsdag:
Konsoll. WriteLine("Jeg trenger kaffe.");
gå i stykker;
sak Ukedag. Torsdag:
Konsoll. WriteLine("Torsdag er den nye fredagen!");
gå i stykker;
sak Ukedag. Fredag:
Konsoll. WriteLine("Takk Gud det er fredag!");
gå i stykker;
sak Ukedag. Lørdag:
Konsoll. WriteLine("Min favorittdag!");
gå i stykker;
sak Ukedag. Søndag:
Konsoll. WriteLine("Min andre favorittdag!");
gå i stykker;
misligholde:
Konsoll. WriteLine("Ugyldig ukedag.");
gå i stykker;
}

Hvordan iterere over enums i C#

Du kan iterere over enums i C# ved å bruke Enum. GetValues() metode, som returnerer en matrise med alle verdiene i enum. Denne kodebiten skrives ut hver dag i uken, inkludert mandag, tirsdag og så videre:

for hver (Ukedag i Enum. GetValues(type(ukedag)))
{
Konsoll. WriteLine((int)dag); // For å skrive ut indeksen
Konsoll. WriteLine (dag); // For å skrive ut tekstverdien
}

Du kan også iterere over enum-verdier ved å bruke Enum. GetNames() metode. Den returnerer en liste over strengverdier for å representere navnene for enum-alternativene:

for hver (streng Navn i Enum. GetNames(type(ukedag)))
{
int indeks = (int)(Ukedag) Enum. Parse(type(Ukedag), navn);

Konsoll. WriteLine (indeks); // For å skrive ut indeksen
Konsoll. WriteLine (navn); // For å skrive ut tekstverdien
}

Bruke Enums i C#

Du kan bruke enums i koden din for å gjøre den mer lesbar og mindre utsatt for feil. Enums kan også være svært nyttige når de er sammenkoblet med andre strukturer, for eksempel ordbøker.