Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Enumi so uporaben podatkovni tip, ki vam omogoča definiranje seznama poimenovanih možnosti za spremenljivko. Na primer, če želite shraniti vsak dan v tednu, lahko uporabite enum za predstavitev veljavnih vrednosti.

Enumi olajšajo branje in pisanje vaše kode, tako da spodbujajo smiselna imena in omejujejo vrednosti, ki jih lahko uporabite. Pogosto je priročno uporabiti stavek switch za obravnavanje možnih vrednosti enuma.

Enume lahko deklarirate in uporabljate v številnih programskih jezikih, vključno s C#.

Kako deklarirati enum v C#

V C# boste enume običajno decalreirali na ravni imenskega prostora. Na primer, v konzolni aplikaciji C# lahko svoje enume deklarirate kot lastnosti razreda. Tukaj si lahko ogledate primer GitHub repo.

razredProgram
{
enum dan v tednu {
ponedeljek,
torek,
sreda,
četrtek,
petek,
sobota,
nedelja
}

statičnaprazninaGlavni(vrvica[] argumentov)
{

}
}

Ko deklarirate enum, vsaka možnost dobi celoštevilsko vrednost, ki predstavlja njen indeks. Privzeto ima prva vrednost v enum vrednost indeksa 0. Če želite to spremeniti, lahko podate lasten indeks za prvi element, ko deklarirate enum:

enum dan v tednu { 
ponedeljek = 1,
torek,
sreda,
četrtek,
petek,
sobota,
nedelja
}

V tem primeru indeks prvega elementa ponedeljek se začne ob 1. Indeks naslednjega elementa torek bo 2, in tako naprej.

Kako dostopati do vrednosti enum v C#

Do vrednosti, shranjenih znotraj enumov, lahko dostopate na veliko različnih načinov. Vrednost, vrnjena za vsako možnost v enum, je indeks. Za ta primer je vrednost Delovni dan. Petek je 5.

Eden od načinov, kako lahko pridobite ime enum, je z uporabo Enumi. GetName() funkcijo. To dobi ime možnosti pri indeksu 5:

vrvica petek = Enum. GetName(tip(Delovni dan), Delovni dan. petek);
Konzola. WriteLine("Hvala bogu, da je" + petek + "!");
// Izhod = Hvala bogu, da je petek!

Do vrednosti lahko dostopate tudi z njenim indeksom. V tem primeru bo vrednost pri indeksu 2 v enumu Weekday (ki je torek) shranjena v spremenljivki:

Torek med tednom = (dan v tednu)2;
Konzola. WriteLine("Danes je " + torek);
// Izhod = Danes je torek

Ko posredujete enum kot argument v Konzola. WriteLine(), the toString() metoda za enum se zažene samodejno. To pomeni, da namesto tiskanja prave številčne vrednosti enuma, ki je 5, bo natisnil vrednost niza, Petek.

Konzola. WriteLine (dan v tednu. četrtek + "je novo" + dan v tednu. petek);
// Izhod = četrtek je novi petek

Lahko tudi pretvorite ali razčlenite podatkovni tip v celo število kot drug način za shranjevanje indeksa možnosti:

int ponedeljekIndex = (int) Delovni dan. ponedeljek;
Konzola. WriteLine (ponedeljkov Indeks);
// Izhod = 1

Kako primerjati enume v C#

V C# lahko enume primerjate z uporabo primerjalnih operatorjev (==, !=, , <=, >=). To bo primerjalo številčno vrednost možnosti.

Weekday day1 = dan v tednu. ponedeljek;
Weekday day2 = dan v tednu. torek;

če (1. dan == 2. dan)
{
Konzola. WriteLine("Dnevi so enaki.");
}
drugače
{
Konzola. WriteLine("Dnevi so drugačni.");
}

V tem primeru je vrednost dneva v tednu. Ponedeljek je 1 in vrednost dneva v tednu. V torek je 2, torej 1 == 2 primerjava ne bo uspela.

Drug način primerjave enumov je je enako() metoda:

če (dan1.Enako (dan2))
{
Konzola. WriteLine("Dnevi so enaki.");
}
drugače
{
Konzola. WriteLine("Dnevi so drugačni.");
}

Lahko tudi uporabite stavek C# switch da primerjate vrednost z vsako možnostjo v enum. V tem primeru bo koda spadala v primer srede:

Weekday valueToCompare = Dan v tednu. sreda;

stikalo (valueToCompare)
{
Ovitek Delovni dan. ponedeljek:
Konzola. WriteLine("Potrebujem kavo.");
odmor;
Ovitek Delovni dan. torek:
Konzola. WriteLine("Potrebujem kavo.");
odmor;
Ovitek Delovni dan. sreda:
Konzola. WriteLine("Potrebujem kavo.");
odmor;
Ovitek Delovni dan. četrtek:
Konzola. WriteLine("Četrtek je novi petek!");
odmor;
Ovitek Delovni dan. petek:
Konzola. WriteLine("Hvala bogu, da je petek!");
odmor;
Ovitek Delovni dan. sobota:
Konzola. WriteLine("Moj najljubši dan!");
odmor;
Ovitek Delovni dan. nedelja:
Konzola. WriteLine("Moj drugi najljubši dan!");
odmor;
privzeto:
Konzola. WriteLine("Neveljaven dan v tednu.");
odmor;
}

Kako ponoviti enume v C#

Enume v C# lahko ponavljate z uporabo Enum. GetValues() metoda, ki vrne matriko vseh vrednosti v enum. Ta delček kode se natisne vsak dan v tednu, vključno s ponedeljkom, torkom in tako naprej:

za vsakogar (dan v tednu v Enum. GetValues(tip(dan v tednu)))
{
Konzola. WriteLine((int)dan); // Za tiskanje kazala
Konzola. WriteLine (dan); // Za tiskanje besedilne vrednosti
}

Vrednosti enum lahko tudi ponavljate z uporabo Enum. GetNames() metoda. Vrne seznam vrednosti nizov, ki predstavljajo imena za možnosti enum:

za vsakogar (vrvica ime v Enum. GetNames(tip(dan v tednu)))
{
int indeks = (int)(dan v tednu) Enum. Razčleni(tip(dan v tednu), ime);

Konzola. WriteLine (indeks); // Za tiskanje kazala
Konzola. WriteLine (ime); // Za tiskanje besedilne vrednosti
}

Uporaba enumov v C#

V svoji kodi lahko uporabite enume, da bo bolj berljiva in manj nagnjena k napakam. Enumi so lahko zelo uporabni tudi v kombinaciji z drugimi strukturami, kot so slovarji.