Enumit ovat hyödyllinen tietotyyppi, jonka avulla voit määrittää luettelon nimetyistä vaihtoehdoista muuttujalle. Jos esimerkiksi haluat tallentaa jokaisen viikonpäivän, voit käyttää enumia edustamaan kelvollisia arvoja.
Enumit helpottavat koodin lukemista ja kirjoittamista rohkaisemalla mielekkäisiin nimiin ja rajoittamalla käytettävissä olevia arvoja. Usein on kätevää käyttää kytkinlausetta enumin mahdollisten arvojen käsittelemiseen.
Voit ilmoittaa ja käyttää enumeja monilla ohjelmointikielillä, mukaan lukien C#.
Kuinka ilmoittaa enum C#:ssa
C#:ssa enum-merkit yleensä nimiavaruuden tasolla. Esimerkiksi C#-konsolisovelluksessa voit ilmoittaa enumit luokan ominaisuuksiksi. Voit katsoa esimerkin tästä GitHub repo.
luokkaaOhjelmoida
{
enum arkipäivä {
Maanantai,
Tiistai,
Keskiviikko,
Torstai,
Perjantai,
lauantai,
sunnuntai
}
staattinenmitätönMain(merkkijono[] args)
{
}
}
Kun määrität enum-arvon, jokainen vaihtoehto saa kokonaislukuarvon edustamaan sen indeksiä. Oletusarvon mukaan enum: n ensimmäisen arvon indeksiarvo on 0. Voit muuttaa tätä määrittämällä oman indeksin ensimmäiselle elementille, kun ilmoitat enum: n:
enum arkipäivä {
Maanantai = 1,
Tiistai,
Keskiviikko,
Torstai,
Perjantai,
lauantai,
sunnuntai
}
Tässä tapauksessa ensimmäisen elementin indeksi maanantai alkaa 1. Seuraavan elementin indeksi tiistai tulee olemaan 2, ja niin edelleen.
Enum-arvon käyttäminen C#:ssa
Voit käyttää enumeihin tallennettuja arvoja monella eri tavalla. Jokaiselle enum-vaihtoehdolle palautettu arvo on indeksi. Tässä esimerkissä arvo Viikonpäivä. perjantai On 5.
Yksi tapa noutaa enumin nimi on käyttää Enums. GetName() toiminto. Tämä saa vaihtoehdon nimen indeksissä 5:
merkkijono perjantai = Enum. GetName(tyyppi(arkipäivä), arkipäivä. Perjantai);
Konsoli. WriteLine("Luojan kiitos se on" + perjantai + "!");
// Output = Luojan kiitos, että on perjantai!
Voit käyttää arvoa myös sen indeksin avulla. Tässä tapauksessa arvo indeksissä 2 Viikonpäiväluettelossa (joka on tiistai) tallennetaan muuttujaan:
Arkipäivä tiistai = (arkipäivä)2;
Konsoli. WriteLine("Tänään on " + tiistai);
// Tulos = Tänään on tiistai
Kun välität enum argumenttina sisään Konsoli. WriteLine(), toString() enum-menetelmä suoritetaan automaattisesti. Tämä tarkoittaa, että sen sijaan, että tulostettaisiin enumin todellinen numeerinen arvo, joka on 5, se tulostaa merkkijonon arvon, perjantai.
Konsoli. WriteLine (arkipäivä. Torstai + "on uusi" + Arkipäivä. Perjantai);
// Tulos = Torstai on uusi perjantai
Voit myös muuntaa tai jäsentää tietotyyppiä kokonaisluvuksi toisena tapana tallentaa vaihtoehdon indeksi:
int maanantaiIndeksi = (int)Arkipäivä. Maanantai;
Konsoli. WriteLine (mondayIndex);
// Tulos = 1
Kuinka vertailla enumuksia C#:ssa
C#:ssa voit vertailla enumeita käyttämällä vertailuoperaattoreita (==, !=, , <=, >=). Tämä vertaa vaihtoehtojen numeerisia arvoja.
Viikonpäivä päivä1 = viikonpäivä. Maanantai;
Viikonpäivä päivä2 = viikonpäivä. Tiistai;
jos (päivä1 == päivä2)
{
Konsoli. WriteLine(– Päivät ovat samat.);
}
muu
{
Konsoli. WriteLine(– Päivät ovat erilaisia.);
}
Tässä esimerkissä viikonpäivän arvo. Maanantai on 1 ja arkipäivän arvo. Tiistai on 2, joten 1 == 2 vertailu epäonnistuu.
Toinen tapa vertailla enumeita on Yhtä kuin () menetelmä:
jos (päivä1.Yhtä kuin (day2))
{
Konsoli. WriteLine(– Päivät ovat samat.);
}
muu
{
Konsoli. WriteLine(– Päivät ovat erilaisia.);
}
Voit myös käytä C#-kytkinkäskyä vertailla arvoa luettelon jokaiseen vaihtoehtoon. Tässä esimerkissä koodi osuu keskiviikon tapaukseen:
Viikonpäivä valueToCompare = Viikonpäivä. Keskiviikko;
vaihtaa (valueToCompare)
{
tapaus Viikonpäivä. Maanantai:
Konsoli. WriteLine("Tarvitsen kahvia.");
tauko;
tapaus Viikonpäivä. Tiistai:
Konsoli. WriteLine("Tarvitsen kahvia.");
tauko;
tapaus Viikonpäivä. Keskiviikko:
Konsoli. WriteLine("Tarvitsen kahvia.");
tauko;
tapaus Viikonpäivä. Torstai:
Konsoli. WriteLine("Torstai on uusi perjantai!");
tauko;
tapaus Viikonpäivä. Perjantai:
Konsoli. WriteLine("Luojan kiitos on perjantai!");
tauko;
tapaus Viikonpäivä. lauantai:
Konsoli. WriteLine("Lempipäiväni!");
tauko;
tapaus Viikonpäivä. Sunnuntai:
Konsoli. WriteLine("Toinen suosikkipäiväni!");
tauko;
oletuksena:
Konsoli. WriteLine("Virheellinen viikonpäivä.");
tauko;
}
Enumeiden iterointi C#:ssa
Voit iteroida enumeita C#-kielellä käyttämällä Enum. GetValues() menetelmä, joka palauttaa joukon kaikista enum-arvoista. Tämä koodinpätkä tulostuu jokaisena viikonpäivänä, mukaan lukien maanantai, tiistai ja niin edelleen:
jokaiselle (arkipäivä sisään Enum. GetValues(tyyppi(arkipäivä)))
{
Konsoli. WriteLine((int)päivä); // Indeksin tulostaminen
Konsoli. WriteLine (päivä); // Tekstin arvon tulostaminen
}
Voit myös iteroida enum-arvoja käyttämällä Enum. GetNames() menetelmä. Se palauttaa luettelon merkkijonoarvoista, jotka edustavat enum-vaihtoehtojen nimiä:
jokaiselle (merkkijono nimi sisään Enum. GetNames(tyyppi(arkipäivä)))
{
int indeksi = (int)(Arkipäivä) Enum. Jäsentää(tyyppi(arkipäivä), nimi);
Konsoli. WriteLine (indeksi); // Indeksin tulostaminen
Konsoli. WriteLine (nimi); // Tekstin arvon tulostaminen
}
Enumien käyttö C#:ssa
Voit käyttää koodissasi enumeita tehdäksesi siitä luettavamman ja vähemmän altis virheille. Enumit voivat olla myös erittäin hyödyllisiä, kun ne yhdistetään muihin rakenteisiin, kuten sanakirjoihin.