C# Enum(Enumeration) esimerkin kanssa

โšก ร„lykรคs yhteenveto

C#:n luetteloinnit mรครคrittelevรคt nimetyn joukon vakiointegraaliarvoja, kuten viikonpรคivรคt, mikรค helpottaa koodin lukemista ja yllรคpitoa. Avainsana enum mรครคrittรครค nรคmรค kiinteรคt vakiot kerran uudelleenkรคytettรคvรคksi koko ohjelmassa.

  • ๐Ÿ“ Mรครคritelmรค: Avainsana enum ryhmittelee nimetyt vakiot yhden tyypin alle korvaten hajanaiset taikaluvut luettavilla tunnisteilla.
  • ๏ธ Pรคivรคn esimerkki: Luettelointi nimeltรค Days tallentaa viikonpรคivรคt, ja Days.Sun palauttaa valitun jรคsenen sen nimen perusteella.
  • ๐Ÿ”ข Perusarvot: Enum-jรคsenet vastaavat kokonaislukuarvoja, jotka alkavat nollasta ja kasvavat yhdellรค, ellei mukautettuja numeroita ole mรครคritetty.
  • ๐Ÿ” muunnokset: Eksplisiittiset muunnokset muuttavat enumin kokonaisluvuksi, kun taas Enum.Parse ja Enum.TryParse muuntavat tekstin takaisin jรคseniksi.
  • ๐Ÿšฉ Liput: Flags-attribuutti antaa yhden enum-arvon yhdistรครค useita vaihtoehtoja bittikentiksi kรคyttรคmรคllรค bittikohtaista TAI-operaattoria.
  • ๐Ÿค– AI-apu: GitHub Copilot ja ML.NET auttavat luomaan enum-mรครคritelmiรค ja yhdistรคmรครคn enumit koneoppimisominaisuuksiin.

C# Enum(Luettelointi)

C# luettelointi

Luetteloa kรคytetรครคn missรค tahansa ohjelmointikielessรค mรครคrittรคmรครคn vakio arvojen joukko. Esimerkiksi viikonpรคivรคt voidaan mรครคritellรค luetteloiksi ja kรคyttรครค kaikkialla ohjelmassa. C#:ssa luettelointi mรครคritellรครคn avainsanan 'enum' avulla.

Katsotaanpa esimerkkiรค enum-avainsanan kรคytรถstรค.

Esimerkissรคmme mรครคritรคmme luettelon nimeltรค pรคivรคt, jota kรคytetรครคn tallentamaan viikonpรคivรคt. Jokaisessa esimerkissรค muokkaamme vain Program.cs-tiedostomme pรครคtoimintoa.

C# luettelointi

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program 
 {
  enum Days{Sun,Mon,tue,Wed,thu,Fri,Sat};
  
  static void Main(string[] args) 
  {
   Console.Write(Days.Sun);
   
   Console.ReadKey();
  }
 }
}

Code Selitys:-

  1. "enum" tietotyyppi on mรครคritetty ilmoittamaan luettelo. Luettelon nimi on Days. Kaikki viikonpรคivรคt on mรครคritetty luettelon arvoiksi.
  2. Lopuksi console.write-funktiota kรคytetรครคn nรคyttรคmรครคn yksi luettelon arvoista.

Jos yllรค oleva koodi on syรถtetty oikein ja ohjelma suoritetaan onnistuneesti, seuraava tulos nรคytetรครคn.

lรคhtรถ:

C# luettelointi

Tulosteesta nรคet, ettรค konsolissa nรคkyy luettelon 'Aurinko'-arvo.

Miksi kรคyttรครค Enum-arvoja C#:ssa?

Enumit tekevรคt ohjelmasta helpommin luettavan, turvallisemman ja yksinkertaisemman yllรคpitรครค. Sen sijaan, ettรค selittรคmรคttรถmiรค lukuja, joita joskus kutsutaan taikaluvuiksi, sirotellaan koko koodiin, luettelo antaa jokaiselle arvolle kuvaavan nimen, joka ilmaisee sen tarkoituksen.

  • luettavuus: Nimi, kuten Days.Fri, on paljon selkeรคmpi kuin numero 5, joten kuka tahansa koodin lukeva ymmรคrtรครค sen merkityksen vรคlittรถmรคsti.
  • Tyyppiturvallisuus: Enum-tyypillรค ilmoitettu muuttuja voi sisรคltรครค vain yhden mรครคritellyistรค jรคsenistรค, mikรค estรครค virheellisten arvojen lipsahtamisen.ping tuumaa
  • Yllรคpidettรคvyys: Toisiinsa liittyvรคt vakiot sijaitsevat yhdessรค paikassa, joten arvon lisรครคminen tai uudelleennimeรคminen pรคivittรครค koko ohjelman johdonmukaisesti.
  • Tietojen sidonta: Kehykset, kuten WPF ja ASP.NET, voivat sitoa enumin alasvetovalikkoon, mikรค tekee enumeista hyรถdyllisiรค kรคyttรถliittymien rakentamisessa.

Koska kรครคntรคjรค tarkistaa jokaisen sijoituksen sallittuja jรคseniรค vasten, enumit auttavat myรถs havaitsemaan virheitรค varhaisessa vaiheessa, ennen ohjelman suorittamista.

Mukautettujen arvojen mรครคrittรคminen C#-enumille

Oletusarvoisesti C# antaa ensimmรคiselle enum-jรคsenelle arvon 0 ja kasvattaa jokaista seuraavaa jรคsentรค yhdellรค. Yllรค olevassa Days-luetteloinnissa su on 0, ma on 1 ja la on 6. Voit ohittaa nรคmรค oletusasetukset antamalla eksplisiittiset numerot.

  • Eksplisiittiset arvot: Enum Level {Low = 1, Medium = 5, High = 10} -arvon kirjoittaminen asettaa jokaiselle jรคsenelle valitun numeron oletusarvon sijaan.
  • Osittainen tehtรคvรค: Jos mรครคritรคt arvon vain joillekin jรคsenille, kรครคntรคjรค jatkaa numeroinnin viimeksi mรครคritetystรค arvosta seuraaville jรคsenille.
  • Perustyyppi: Enum tallentaa jรคsenensรค oletusarvoisesti kokonaislukuna, mutta voit kรคyttรครค tavua, shorttia tai longia muistin sรครคstรคmiseksi tai aluetta laajentaaksesi.

Mukautetut arvot ovat hyรถdyllisiรค, kun numeroiden on vastattava ulkoista jรคrjestelmรครค, kuten tietokantakoodeja tai protokollavakioita, jotta luettelointi peilaa todellista dataa tรคsmรคlleen.

C#-enum-arvojen muuntaminen kokonaislukuiksi, merkkijonoiksi ja lipuiksi

C#:ssa enum-arvo tรคytyy usein siirtรครค toiseen muotoon, kuten tallentaa se numerona tai lukea se takaisin tekstistรค. Nรคmรค muunnokset tapahtuvat muutamalla vakiotavalla.

  • Enum kokonaisluvuksi: Eksplisiittinen muunnos, kuten (int)Days.Wed, palauttaa pohjana olevan kokonaisluvun, joka on hyรถdyllinen tallennuksessa tai aritmetiikassa.
  • int-luku enum-muotoon: Toiseen suuntaan muuntaminen, esimerkiksi muotoon (Days)3, muuttaa luvun takaisin vastaavaksi enum-jรคseneksi.
  • Merkkijono luetteloon: Enum.Parse ja turvallisempi Enum.TryParse muuntavat nimen, kuten โ€Friโ€, Days.Fri-jรคseneksi heittรคmรคttรค virheellistรค tekstiรค.
  • Enum merkkijonoksi: ToString-funktion kutsuminen mille tahansa jรคsenelle palauttaa sen nimen, joten Days.Sun.ToString() tuottaa โ€Sunโ€ nรคytettรคvรคksi tai lokiin kirjattavaksi.
  • Listauksen jรคsenet: Enum.GetValues โ€‹โ€‹ja Enum.GetNames palauttavat kaikki arvon tai nimen, mikรค auttaa valikoiden tรคyttรคmisessรค tai syรถtteen validoinnissa.

Kun enumin tulisi edustaa vaihtoehtojen yhdistelmรครค yhden sijaan, kรคytรค Flags-attribuuttia ja anna jokaiselle jรคsenelle kahden potenssi, kuten 1, 2, 4 ja 8. Voit sitten yhdistรครค jรคseniรค bittikohtaisella TAI-operaattorilla ja testata tiettyรค vaihtoehtoa HasFlag-metodilla.

Nรคmรค muunnostekniikat mahdollistavat luettelon siirtymisen selkeรคsti luettavien nimien, tallennettujen numeroiden ja yhdistettyjen lippujoukkojen vรคlillรค, keeping loput ohjelmasta ovat sekรค tyyppiturvallisia ettรค helppoja seurata.

UKK

Enum-muuttuja on oletusarvoltaan 0, ja se arvo yhdistetรครคn siihen jรคseneen, joka on yhtรค kuin 0. Jos mikรครคn jรคsen ei ole 0, muuttujan arvo on edelleen 0, joten kehittรคjรคt mรครคrittelevรคt usein ensin Ei mitรครคn- tai Tuntematon-jรคsenen sekaannusten vรคlttรคmiseksi.

Vakio mรครคrittรครค yhden nimetyn arvon, kun taas enum ryhmittelee toisiinsa liittyvรคn joukon nimettyjรค vakioita yhden tyypin alle. Enumit lisรครคvรคt myรถs tyyppiturvallisuutta, koska muuttuja voi sisรคltรครค vain yhden luetteloinnin mรครคritellyistรค jรคsenistรค.

Kyllรค. Enum voidaan deklaroida nimiavaruuden sisรคllรค tai sisรคkkรคin luokassa tai rakenteessa, mikรค rajoittaa sen soveltamisalan kyseiseen tyyppiin. C# ei kuitenkaan salli enumin deklarointia metodin rungon sisรคllรค.

Kyllรค. Kahdella tai useammalla jรคsenellรค voi olla sama pohjana oleva numero, jolloin myรถhemmรคt nimet ovat ensimmรคisen aliaksia. Vertailuissa niitรค kรคsitellรครคn tasavertaisina, ja arvon muuntaminen merkkijonoksi palauttaa enum-luettelossa ensimmรคisenรค mรครคritellyn nimen.

Enum on arvotyyppi, joten se tallentaa datansa suoraan kekoon viitteen sijaan. Se perii System.Enum-tyypistรค, mutta toimii kuten alla oleva integraalityyppi, mikรค tekee enum-arvojen kopioimisesta ja vertailusta nopeaa.

Kyllรค. ML.NETissรค voit yhdistรครค enumin kategoriseen ominaisuuteen tai tunnisteeseen, usein muuntamalla sen kokonaislukuarvoksi tai kertakoodaukseksi. Vahvasti tyypitetyt enumit pitรคvรคt koneoppimisputken syรถtesarakkeet selkeinรค ja johdonmukaisina.

Kyllรค. GitHub Copilot ehdottaa tรคydellisiรค enum-mรครคritelmiรค, mukautettuja arvoja, Flags-attribuutteja ja muunnosavustajia, kuten Enum.TryParse Visual Studiossa ja VS Code. RevTarkastele jokaista ehdotusta, koska Copilot voi valita arvoja tai nimiรค, jotka eivรคt sovi toimialueeseesi.

Kรคytรค Enum.IsDefined-metodia, joka palauttaa arvon true, kun annettu numero tai nimi vastaa mรครคriteltyรค jรคsentรค. Sen ja Enum.TryParse-metodin yhdistรคminen mahdollistaa kรคyttรคjรคn syรถtteen turvallisen validoinnin ennen tekstin muuntamista enum-arvoksi.

Tiivistรค tรคmรค viesti seuraavasti: