Enums on kasulik andmetüüp, mis võimaldab teil määratleda muutuja nimeliste valikute loendi. Näiteks kui soovite salvestada iga nädalapäeva, saate kehtivate väärtuste esitamiseks kasutada loendit.
Enumsid muudavad teie koodi lugemise ja kirjutamise lihtsamaks, julgustades andma tähendusrikkaid nimesid ja piirates kasutatavaid väärtusi. Enumi võimalike väärtuste käsitlemiseks on sageli mugav kasutada lülitilauset.
Saate deklareerida ja kasutada enumeid paljudes programmeerimiskeeltes, sealhulgas C#.
Kuidas deklareerida enumi C#-s
C#-s dekaleerite loendid tavaliselt nimeruumi tasemel. Näiteks saate C# konsoolirakenduses deklareerida oma enumid klassi atribuutidena. Selles saate vaadata näidet GitHubi repo.
klassProgramm
{
enum nädalapäev {
esmaspäev,
teisipäeval,
kolmapäeval,
neljapäeval,
reedel,
laupäeval,
pühapäev
}
staatilinetühinePeamine(string[] args)
{
}
}
Kui deklareerite loendi, saab iga suvand täisarvu, mis esindab selle indeksit. Vaikimisi on loendi esimese väärtuse indeksi väärtus 0. Selle muutmiseks saate loendi deklareerimisel määrata esimese elemendi jaoks oma indeksi:
enum nädalapäev {
Esmaspäev = 1,
teisipäeval,
kolmapäeval,
neljapäeval,
reedel,
laupäeval,
pühapäev
}
Sel juhul esimese elemendi indeks esmaspäev algab kell 1. Järgmise elemendi indeks teisipäeval saab 2, ja nii edasi.
Kuidas C#-s Enum-väärtusele juurde pääseda
Enumitesse salvestatud väärtustele pääsete juurde mitmel erineval viisil. Iga loendi valiku jaoks tagastatav väärtus on indeks. Selle näite puhul on väärtus Nädalapäev. reedel on 5.
Üks viis loendi nime saamiseks on kasutada Enums. GetName() funktsiooni. See saab indeksi 5 valiku nime:
string reede = Enum. GetName(tüüp(nädalapäev), nädalapäev. reede);
konsool. WriteLine("Jumal tänatud, et see on" + reede + "!");
// Väljund = Jumal tänatud, et on reede!
Väärtusele pääsete juurde ka selle indeksi abil. Sel juhul salvestatakse nädalapäevade loendi indeksi 2 väärtus (mis on teisipäev) muutujasse:
tööpäeva teisipäev = (nädalapäev)2;
konsool. WriteLine("Täna on " + teisipäev);
// Väljund = Täna on teisipäev
Kui annate argumendina enum sisse konsool. WriteLine(), toString() loendi meetod töötab automaatselt. See tähendab, et selle asemel, et trükkida enumi tegelik arvväärtus, mis on 5, prindib see stringi väärtuse, reedel.
konsool. WriteLine (nädalapäev. Neljapäev + "on uus" + tööpäev. reede);
// Väljund = Neljapäev on uus reede
Sa saad ka teisendada või sõeluda andmetüüp täisarvuks teise võimalusena suvandi indeksi salvestamiseks:
int esmaspäevIndeks = (int)Argipäev. esmaspäev;
konsool. WriteLine (mondayIndex);
// Väljund = 1
Kuidas võrrelda enumeid C#-s
C#-s saate loendeid võrrelda võrdlustehtetega (==, !=, , <=, >=). See võrdleb valikute arvväärtusi.
Weekday day1 = nädalapäev. esmaspäev;
Nädalapäev päev2 = nädalapäev. teisipäev;
kui (päev 1 == päev 2)
{
konsool. WriteLine("Päevad on samad.");
}
muidu
{
konsool. WriteLine("Päevad on erinevad.");
}
Selles näites on nädalapäeva väärtus. Esmaspäev on 1 ja nädalapäeva väärtus. Teisipäev on 2, seega 1 == 2 võrdlemine ebaõnnestub.
Teine viis enumite võrdlemiseks on Võrdub () meetod:
kui (day1.Võrdub (day2))
{
konsool. WriteLine("Päevad on samad.");
}
muidu
{
konsool. WriteLine("Päevad on erinevad.");
}
Sa saad ka kasutage C# switchi lauset et võrrelda väärtust loendi iga valikuga. Selles näites langeb kood kolmapäevakusse:
Nädalapäev valueToCompare = nädalapäev. kolmapäev;
lüliti (valueToCompare)
{
juhtum Nädalapäev. Esmaspäev:
konsool. WriteLine("Ma vajan kohvi.");
murda;
juhtum Nädalapäev. teisipäev:
konsool. WriteLine("Ma vajan kohvi.");
murda;
juhtum Nädalapäev. kolmapäev:
konsool. WriteLine("Ma vajan kohvi.");
murda;
juhtum Nädalapäev. Neljapäev:
konsool. WriteLine("Neljapäev on uus reede!");
murda;
juhtum Nädalapäev. reedel:
konsool. WriteLine("Jumal tänatud, et on reede!");
murda;
juhtum Nädalapäev. laupäeval:
konsool. WriteLine("Minu lemmikpäev!");
murda;
juhtum Nädalapäev. Pühapäev:
konsool. WriteLine("Minu teine lemmikpäev!");
murda;
vaikimisi:
konsool. WriteLine("Vigane nädalapäev.");
murda;
}
Kuidas itereerida enumite üle C#-s
Saate itereerida enumide üle C#-s, kasutades Enum. GetValues() meetod, mis tagastab loendi kõigi väärtuste massiivi. See koodilõik prinditakse igal nädalapäeval, sealhulgas esmaspäeval, teisipäeval ja nii edasi.
igaühele (Argipäev sisse Enum. GetValues(tüüp(nädalapäev)))
{
konsool. WriteLine((int)päev); // Indeksi printimiseks
konsool. WriteLine (päev); // Teksti väärtuse printimiseks
}
Samuti saate loendi väärtusi korrata, kasutades Enum. GetNames() meetod. See tagastab stringiväärtuste loendi, mis tähistab loendi valikute nimesid:
igaühele (string nimi sisse Enum. GetNames(tüüp(nädalapäev)))
{
int indeks = (int)(Nädalapäev) Enum. Parse(tüüp(nädalapäev), nimi);
konsool. WriteLine (indeks); // Indeksi printimiseks
konsool. WriteLine (nimi); // Teksti väärtuse printimiseks
}
Enumi kasutamine C#-s
Saate oma koodis kasutada enume, et muuta see paremini loetavaks ja vähem altid vigadele. Enumsid võivad olla väga kasulikud ka siis, kui need on seotud teiste struktuuridega, näiteks sõnaraamatutega.