C# Enum(Enumeracija) s primjerom
⚡ Pametni sažetak
Nabrajanja u C# definiraju imenovani skup konstantnih integralnih vrijednosti, kao što su dani u tjednu, što olakšava čitanje i održavanje koda. Ključna riječ enum deklarira ove fiksne konstante jednom za ponovnu upotrebu u programu.

C# nabrajanje
Nabrajanje se koristi u bilo kojem programskom jeziku za definiranje konstantnog skupa vrijednosti. Na primjer, dani u tjednu mogu se definirati kao nabrajanje i koristiti bilo gdje u programu. U C#, enumeracija je definirana uz pomoć ključne riječi 'enum'.
Pogledajmo primjer kako možemo koristiti ključnu riječ 'enum'.
U našem primjeru definirat ćemo enumeraciju pod nazivom dani, koja će se koristiti za pohranjivanje dana u tjednu. Za svaki primjer, izmijenit ćemo samo glavnu funkciju u našoj datoteci Program.cs.
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 Obrazloženje:-
- "enum" tip podataka naveden je za deklariranje enumeracije. Naziv enumeracije je Dani. Svi dani u tjednu navedeni su kao vrijednosti nabrajanja.
- Konačno, funkcija console.write koristi se za prikaz jedne od vrijednosti enumeracije.
Ako se gornji kod ispravno unese i program se uspješno izvede, prikazat će se sljedeći izlaz.
Izlaz:
Iz izlaza možete vidjeti da je vrijednost 'Sun' enumeracije prikazana na konzoli.
Zašto koristiti nabrajanja u C#?
Nabrajanje čini program lakšim za čitanje, sigurnijim i jednostavnijim za održavanje. Umjesto raspršivanja neobjašnjivih brojeva, ponekad nazvanih magičnim brojevima, po kodu, nabrajanje svakoj vrijednosti daje opisno ime koje navodi njezinu namjeru.
- Čitljivost: Naziv poput Days.Fri je daleko jasniji od broja 5, tako da svatko tko čita kod odmah razumije značenje.
- Sigurnost tipa: Varijabla deklarirana s tipom nabrajanja može sadržavati samo jedan od definiranih članova, što sprječava ispadanje nevažećih vrijednosti.ping u.
- Mogućnost održavanja: Povezane konstante nalaze se na jednom mjestu, pa dodavanje ili preimenovanje vrijednosti dosljedno ažurira cijeli program.
- Povezivanje podataka: Okviri poput WPF-a i ASP.NET-a mogu vezati enum s padajućim popisom, što enum-e čini korisnima za izgradnju korisničkih sučelja.
Budući da kompajler provjerava svaku dodjelu u odnosu na dopuštene članove, nabrajanja također pomažu u ranom otkrivanju pogrešaka, prije nego što se program pokrene.
Dodjeljivanje prilagođenih vrijednosti C# nabrojanom elementu
Prema zadanim postavkama, C# prvom članu nabrajanja dodjeljuje vrijednost 0 i povećava svaki sljedeći član za jedan. U gornjem nabrajanju Days, Sun je jednako 0, Mon je jednako 1, a Sat je jednako 6. Ove zadane vrijednosti možete poništiti dodjeljivanjem eksplicitnih brojeva.
- Eksplicitne vrijednosti: Zapisivanjem enum Level {Low = 1, Medium = 5, High = 10} svaki član se postavlja na odabrani broj umjesto zadanog niza.
- Djelomični zadatak: Ako dodijelite vrijednost samo nekim članovima, kompajler nastavlja numeriranje od posljednje dodijeljene vrijednosti za članove koji slijede.
- Vrsta temeljnog instrumenta: Enum po zadanim postavkama pohranjuje svoje članove kao cijeli broj, ali možete ga temeljiti na bajtovima, kratkim brojevima ili dugim brojevima kako biste uštedjeli memoriju ili proširili raspon.
Prilagođene vrijednosti su korisne kada se brojevi moraju podudarati s vanjskim sustavom, kao što su kodovi baze podataka ili konstante protokola, tako da nabrajanje točno odražava stvarne podatke.
Kako pretvoriti C# nabrajanja u int, string i flag-ove
C# često treba premjestiti vrijednost nabrajanja u drugi oblik, poput pohranjivanja kao broja ili čitanja iz teksta. Ove se pretvorbe događaju na nekoliko standardnih načina.
- Nabrajanje u cijeli broj: Eksplicitni cast kao što je (int)Days.Wed vraća temeljni cijeli broj, što je korisno za pohranu ili aritmetiku.
- int u nabrajanje: Pretvaranje u drugom smjeru, na primjer (Dani)3, vraća broj natrag u odgovarajući član nabrajanja.
- Niz za nabrajanje: Enum.Parse i sigurniji Enum.TryParse pretvaraju naziv poput "Fri" u član Days.Fri bez vraćanja nevažećeg teksta.
- Nabrajanje u niz: Pozivanje ToStringa na bilo kojem članu vraća njegovo ime, pa Days.Sun.ToString() proizvodi „Sun“ za prikaz ili zapisivanje u dnevnik.
- Članovi popisa: Enum.GetValues i Enum.GetNames vraćaju svaku vrijednost ili naziv, što pomaže pri popunjavanju izbornika ili provjeri unosa.
Kada nabrajanje treba predstavljati kombinaciju izbora, a ne jedan, primijenite atribut Flags i svakom članu dajte potenciju broja dva, kao što su 1, 2, 4 i 8. Zatim možete kombinirati članove bitnim operatorom OR i testirati određenu opciju metodom HasFlag.
Ove tehnike pretvorbe omogućuju nabrajanju čisto kretanje između čitljivih imena, pohranjenih brojeva i kombiniranih skupova zastavica, očuvajućiping ostatak programa je siguran za tip i jednostavan za praćenje.


