C# Enum(Enumerare) cu Exemplu
โก Rezumat inteligent
Enumeraศiile รฎn C# definesc un set denumit de valori integrale constante, cum ar fi zilele sฤptฤmรขnii, facilitรขnd citirea ศi รฎntreศinerea codului. Cuvรขntul cheie enum declarฤ aceste constante fixe o singurฤ datฤ pentru reutilizare รฎn cadrul unui program.

Enumerare C#
O enumerare este folositฤ รฎn orice limbaj de programare pentru a defini un set constant de valori. De exemplu, zilele sฤptฤmรขnii pot fi definite ca o enumerare ศi utilizate oriunde รฎn program. รn C#, enumerarea este definitฤ cu ajutorul cuvรขntului cheie 'enum'.
Sฤ vedem un exemplu despre cum putem folosi cuvรขntul cheie โenumโ.
รn exemplul nostru, vom defini o enumerare numitฤ zile, care va fi folositฤ pentru a stoca zilele sฤptฤmรขnii. Pentru fiecare exemplu, vom modifica doar funcศia principalฤ din fiศierul 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 Explicaลฃie:-
- โenumโ tip de date este specificat pentru a declara o enumerare. Numele enumerarii este Zile. Toate zilele sฤptฤmรขnii sunt specificate ca valori ale enumeraศiei.
- รn cele din urmฤ, funcศia console.write este folositฤ pentru a afiศa una dintre valorile enumeraศiei.
Dacฤ codul de mai sus este introdus corect ศi programul este executat cu succes, va fi afiศatฤ urmฤtoarea ieศire.
ieศire:
Din rezultat, puteศi vedea cฤ valoarea โSoareโ a enumeraศiei este afiศatฤ รฎn consolฤ.
De ce sฤ folosiศi enumeraศiile รฎn C#?
Enumeraศiile fac un program mai uศor de citit, mai sigur ศi mai simplu de รฎntreศinut. รn loc sฤ รฎmprฤศtie numere inexplicabile, uneori numite numere magice, รฎn tot codul, o enumerare dฤ fiecฤrei valori un nume descriptiv care รฎi exprimฤ intenศia.
- lizibilitate: Un nume precum Days.Fri este mult mai clar decรขt numฤrul 5, aศa cฤ oricine citeศte codul รฎnศelege imediat semnificaศia.
- Tip de siguranศฤ: O variabilฤ declaratฤ cu un tip enum poate conศine doar unul dintre membrii definiศi, ceea ce previne pierderea valorilor nevalide.ping inch
- Mentenabilitatea: Constantele corelate se aflฤ รฎntr-un singur loc, aศadar adฤugarea sau redenumirea unei valori actualizeazฤ รฎntregul program รฎn mod consecvent.
- Legarea datelor: Framework-uri precum WPF ศi ASP.NET pot lega o enumerare la o listฤ derulantฤ, ceea ce face ca enumeraศiile sฤ fie utile pentru construirea de interfeศe utilizator.
Deoarece compilatorul verificฤ fiecare atribuire รฎn raport cu membrii permiศi, enumฤrile ajutฤ ศi la detectarea greศelilor din timp, รฎnainte de rularea programului.
Atribuirea de valori personalizate unei enumฤri C#
รn mod implicit, C# atribuie primului membru al enumerฤrii valoarea 0 ศi creศte fiecare membru urmฤtor cu unu. รn enumerarea Days de mai sus, Sun este egal cu 0, Mon este egal cu 1 ศi Sat este egal cu 6. Puteศi suprascrie aceste valori implicite atribuind numere explicite.
- Valori explicite: Scrierea enum Level {Low = 1, Medium = 5, High = 10} seteazฤ fiecฤrui membru un numฤr ales รฎn loc de secvenศa implicitฤ.
- Sarcinฤ parศialฤ: Dacฤ atribuiศi o valoare doar anumitor membri, compilatorul continuฤ numerotarea de la ultima valoare atribuitฤ pentru membrii care urmeazฤ.
- Tipul subiacent: O enumerare รฎศi stocheazฤ membrii ca int รฎn mod implicit, dar o puteศi baza pe byte, short sau long pentru a economisi memorie sau a extinde intervalul.
Valorile personalizate sunt utile atunci cรขnd numerele trebuie sฤ corespundฤ unui sistem extern, cum ar fi codurile bazei de date sau constantele de protocol, astfel รฎncรขt enumerarea sฤ reflecte exact datele reale.
Cum se convertesc enumeraศiile C# รฎn int, string ศi Flags
C# trebuie frecvent sฤ mute o valoare enum รฎntr-o altฤ formฤ, cum ar fi stocarea ei ca numฤr sau citirea ei din text. Aceste conversii au loc รฎn cรขteva moduri standard.
- De la enumerare la รฎntreg: O conversie explicitฤ, cum ar fi (int)Days.Wed, returneazฤ numฤrul รฎntreg subiacent, ceea ce este util pentru stocare sau aritmeticฤ.
- int cฤtre enum: Convertirea รฎn cealaltฤ direcศie, de exemplu (Zile)3, transformฤ un numฤr รฎnapoi รฎn membrul enumerฤrii corespondent.
- ศir de caractere cฤtre enumerare: Enum.Parse ศi Enum.TryParse, o metodฤ mai sigurฤ, convertesc un nume precum โFriโ รฎn membrul Days.Fri fฤrฤ a genera text nevalid.
- Enumerare cฤtre ศir de caractere: Apelarea funcศiei ToString pe orice membru returneazฤ numele acestuia, astfel รฎncรขt Days.Sun.ToString() produce โSunโ pentru afiศare sau รฎnregistrare รฎn jurnal.
- Membrii listei: Enum.GetValues โโศi Enum.GetNames returneazฤ fiecare valoare sau nume, ceea ce este util la popularea meniurilor sau la validarea datelor de intrare.
Cรขnd o enumerare ar trebui sฤ reprezinte o combinaศie de opศiuni รฎn loc de una singurฤ, aplicaศi atributul Flags ศi daศi fiecฤrui membru o putere de doi, cum ar fi 1, 2, 4 ศi 8. Apoi, puteศi combina membri cu operatorul SAU la nivel de bit ศi puteศi testa o opศiune specificฤ cu metoda HasFlag.
Aceste tehnici de conversie permit unei enumฤri sฤ se miศte uศor รฎntre nume lizibile, numere stocate ศi seturi de steaguri combinate, keeping restul programului este atรขt sigur pentru tipฤrire, cรขt ศi uศor de urmฤrit.


