Cititorii ca tine ajută la sprijinirea MUO. Când efectuați o achiziție folosind link-uri de pe site-ul nostru, este posibil să câștigăm un comision de afiliat. Citeşte mai mult.

Enumerările sunt un tip de date util care vă permit să definiți o listă de opțiuni denumite pentru o variabilă. De exemplu, dacă doriți să stocați fiecare zi a săptămânii, puteți utiliza o enumerare pentru a reprezenta valorile valide.

Enumerările vă fac codul mai ușor de citit și de scris, încurajând nume semnificative și limitând valorile pe care le puteți utiliza. Este adesea convenabil să utilizați o instrucțiune switch pentru a gestiona valorile posibile ale unei enumerari.

Puteți declara și utiliza enumări în multe limbaje de programare, inclusiv C#.

Cum să declari o enumerare în C#

În C#, de obicei veți decalifica enumerarea la nivelul spațiului de nume. De exemplu, într-o aplicație de consolă C#, puteți declara enumerarea ca proprietăți de clasă. Puteți vedea un exemplu în aceasta Repoziție GitHub.

clasăProgram
{
enumerare Ziua săptămânii {
Luni,
Marţi,
Miercuri,
Joi,
Vineri,
Sâmbătă,
duminică
}
instagram viewer

staticgolPrincipal(şir[] argumente)
{

}
}

Când declarați o enumerare, fiecare opțiune primește o valoare întreagă pentru a-și reprezenta indexul. În mod implicit, prima valoare din enumerare are o valoare de index de 0. Pentru a schimba acest lucru, puteți specifica propriul index pentru primul element atunci când declarați enumerarea:

enumerare Ziua săptămânii { 
luni = 1,
Marţi,
Miercuri,
Joi,
Vineri,
Sâmbătă,
duminică
}

În acest caz, indicele primului element luni incepe la 1. Indicele elementului următor marţi va fi 2, și așa mai departe.

Cum să accesați o valoare Enum în C#

Există multe moduri diferite în care puteți accesa valorile stocate în enums. Valoarea returnată pentru fiecare opțiune din enumerare este indexul. Pentru acest exemplu, valoarea lui Ziua săptămânii. vineri este 5.

O modalitate prin care puteți prelua numele enumerarii este folosind Enumări. GetName() funcţie. Acesta primește numele opțiunii la indexul 5:

şir vineri = Enum. GetName(tip de(Ziua săptămânii), Ziua săptămânii. Vineri);
Consolă. WriteLine(" Slavă Domnului că este " + vineri + "!");
// Ieșire = Slavă Domnului că este vineri!

De asemenea, puteți accesa o valoare folosind indexul acesteia. În acest caz, valoarea de la indexul 2 din enumerarea zilei săptămânii (care este marți) va fi stocată în variabilă:

Ziua săptămânii marți = (Ziua săptămânii)2;
Consolă. WriteLine("Azi e " + marți);
// Ieșire = Azi este marți

Când treceți o enumerare ca argument în Consolă. WriteLine(), cel toString() metoda pentru enumerare rulează automat. Aceasta înseamnă că, în loc să tipăriți adevărata valoare numerică a enumerarii, care este 5, va imprima valoarea șirului, vineri.

Consolă. WriteLine (Ziua săptămânii. joi + "este noua" + Ziua săptămânii. Vineri);
// Ieșire = joi este noua vineri

Poti de asemenea convertiți sau analizați tipul de date într-un număr întreg ca o altă modalitate de a stoca indexul unei opțiuni:

int MondayIndex = (int) Ziua săptămânii. Luni;
Consolă. WriteLine (mondayIndex);
// Ieșire = 1

Cum se compară enumerarea în C#

În C#, puteți compara enumerari folosind operatorii de comparare (==, !=, , <=, >=). Aceasta va compara valoarea numerică a opțiunilor.

Ziua săptămânii1 = Ziua săptămânii. Luni;
Ziua săptămânii2 = Ziua săptămânii. Marţi;

dacă (ziua 1 == ziua 2)
{
Consolă. WriteLine(— Zilele sunt aceleași.);
}
altfel
{
Consolă. WriteLine(„Zilele sunt diferite”.);
}

În acest exemplu, valoarea zilei săptămânii. Luni este 1 și valoarea Zilei săptămânii. Marți este 2, deci 1 == 2 comparația va eșua.

Un alt mod de a compara enumerarile este este egal() metodă:

dacă (ziua1.Egal cu (ziua2))
{
Consolă. WriteLine(— Zilele sunt aceleași.);
}
altfel
{
Consolă. WriteLine(„Zilele sunt diferite”.);
}

Poti de asemenea utilizați o instrucțiune C# switch pentru a compara o valoare cu fiecare opțiune dintr-o enumerare. În acest exemplu, codul va intra în cazul de miercuri:

Weekday valueToCompare = Ziua săptămânii. Miercuri;

intrerupator (valueToCompare)
{
caz Ziua săptămânii. Luni:
Consolă. WriteLine("Am nevoie de cafea.");
pauză;
caz Ziua săptămânii. Marţi:
Consolă. WriteLine("Am nevoie de cafea.");
pauză;
caz Ziua săptămânii. Miercuri:
Consolă. WriteLine("Am nevoie de cafea.");
pauză;
caz Ziua săptămânii. Joi:
Consolă. WriteLine("Joi este noua vineri!");
pauză;
caz Ziua săptămânii. Vineri:
Consolă. WriteLine("Mulțumesc lui Dumnezeu că e vineri!");
pauză;
caz Ziua săptămânii. Sâmbătă:
Consolă. WriteLine(„Ziua mea preferată!”);
pauză;
caz Ziua săptămânii. Duminică:
Consolă. WriteLine("Cealaltă zi a mea preferată!");
pauză;
Mod implicit:
Consolă. WriteLine(„Ziua săptămânii nevalidă”.);
pauză;
}

Cum se repetă peste enumerari în C#

Puteți repeta peste enumerari în C# folosind Enum. GetValues() metoda, care returnează o matrice cu toate valorile din enumerare. Acest fragment de cod se tipărește în fiecare zi a săptămânii, inclusiv luni, marți și așa mai departe:

pentru fiecare (Ziua lucrătoare în Enum. GetValues(tip de(Ziua săptămânii)))
{
Consolă. WriteLine((int)zi); // Pentru a tipări indexul
Consolă. WriteLine (zi); // Pentru a imprima valoarea textului
}

De asemenea, puteți repeta peste valorile enumerate folosind Enum. GetNames() metodă. Returnează o listă de valori de șir pentru a reprezenta numele pentru opțiunile de enumerare:

pentru fiecare (şir Nume în Enum. GetNames(tip de(Ziua săptămânii)))
{
int index = (int)(Ziua săptămânii) Enum. Analiza(tip de(Ziua săptămânii), nume);

Consolă. WriteLine (index); // Pentru a tipări indexul
Consolă. WriteLine (nume); // Pentru a imprima valoarea textului
}

Folosind Enums în C#

Puteți folosi enumări în codul dvs. pentru a-l face mai lizibil și mai puțin predispus la erori. Enumerările pot fi, de asemenea, foarte utile atunci când sunt asociate cu alte structuri, cum ar fi dicționarele.