În acest articol,
tip enumerare (numită enumerare) oferă o modalitate eficientă de a defini un set de constante întregi numite, care pot fi atribuite unei variabile. De exemplu, să presupunem că doriți să definiți o variabilă a cărei valoare ar trebui să reprezinte ziua săptămânii. Există doar șapte au un sentiment de valori, care poate lua o variabilă. Pentru a determina aceste valori pot fi un tip de enumerare care este declarată folosind cuvântul cheie enum.
În mod implicit, tipul de bază al fiecărui element este transferul de int. Puteți specifica un tip întreg diferit, folosind două puncte, așa cum se arată în exemplul anterior. O listă completă de tipuri posibile, a se vedea. A se vedea enum (referință pentru C #).
Pentru a testa valorile numerice de bază prin acționarea unui tip de bază, așa cum este ilustrat în exemplul următor.
Următoarele sunt avantajele utilizării enum în loc de un tip numeric.
Pentru codul de client-side este specificat în mod clar care sunt valorile valide pentru variabila.
În Visual Studio IntelliSense afișează o listă de valori definite.
Dacă nu specificați valori pentru aceste elemente în lista de recenzor, valoarea va crește automat cu 1. În exemplul anterior Days.Sunday este setat la 0, Days.Monday are o valoare de 1, și așa mai departe. D. Când creați o nouă facilitate de Zilele. va avea o Days.Sunday valoare implicită (0), dar nu este în mod clar atribuie o valoare. Atunci când crearea unei înregistrări, selectați valoarea implicită cea mai logică de a utiliza, și setați-l la zero. Ca urmare, toate transferurile, în cazul în care sunt create acestea sunt în mod clar nu specifica valoarea va fi valoarea implicită.
În cazul în care variabila este de tip meetingDay Zile. este posibil (fără conversie explicită) pentru a atribui numai una dintre semnificațiile definite în zile. Și dacă ziua întâlnirii este schimbat, aveți posibilitatea să atribuiți o nouă valoare de zile meetingDay variabilă.
remarcă
MeetingDay variabilă, puteți atribui orice valoare întreagă arbitrar. De exemplu, această linie de cod nu generează o eroare: meetingDay = (zile) 42. Dar acest lucru nu se poate face, pentru că implicit de așteptat ca transferul variabilei ia una dintre valorile definite de enumerarea. Atribuirea unei variabile de tip enumerare valoare arbitrară asociată cu un risc mai mare de eroare.
Enumeratorul listă de tip elemente de enumerare, aveți posibilitatea să atribuiți valori, și puteți utiliza, de asemenea, valorile calculate:
Tipuri de transferuri ca steaguri biți
Acesta poate fi folosit pentru a determina steagurile tip de transfer de biți, prin care o instanță de tip enumerare poate stoca orice combinație dintre valorile definite în lista enumeratorul. (Desigur, unele combinații nu pot face sens sau nu au voie să fie în codul de program.)
Pentru a crea un transfer de steaguri de biți care urmează să fie aplicate atributul System.FlagsAttribute și de a determina valorile, astfel încât acestea să poată fi efectuate pentru operațiunile de biți și. SAU. NU și XOR. Transferul de pavilion biți este numit constantă, cu o valoare de zero, ceea ce înseamnă „pavilion nu este setat.“ Nu atașați valoarea de pavilion de la zero în cazul în care aceasta nu înseamnă „pavilion nu este setat.“
În exemplul următor, să identifice alte versiuni ale acestor zile. Se numește Days2. Nu are Days2 atribut Flags. și fiecare valoare este atribuită puterea următoare a 2. Acest lucru face posibil pentru a crea o variabilă cu o valoare Days2 Days2.Tuesday și Days2.Thursday.
Pentru a seta pavilion privind transferul, utilizați la nivel de bit SAU. așa cum se arată în exemplul următor:
Pentru a determina dacă un steag specific este setat, utilizați la nivel de bit AND. așa cum se arată în exemplul următor:
Pentru mai multe informații despre ce să ia în considerare la determinarea tipurilor de transferuri folosind atributul System.FlagsAttribute. cm. La articolul System.Enum.
Utilizarea metodelor System.Enum pentru primirea și procesarea valorilor de enumerare
Toate transferurile sunt cazuri de tip System.Enum. Nu poți moșteni o nouă clasă de la System.Enum. dar puteți folosi metodele sale de a prelua și modifica datele privind transferul de copiere.
Pentru mai multe informații, consultați. System.Enum.
Puteți crea, de asemenea, o înregistrare pentru o nouă metodă, utilizând o metodă de prelungire. Pentru mai multe informații, consultați. În modul în care. Crearea unei noi metode pentru enumerarea.