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)
{
}
}
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.