Obศinerea valorii maxime dintr-un tip de enumerare este o sarcinฤ comunฤ pe care o รฎntรขlnesc dezvoltatorii. Acest lucru este necesar รฎn scenariile รฎn care trebuie sฤ validaศi intrarea utilizatorului sau sฤ gestionaศi anumite resurse pe baza valorii de enumerare. C# oferฤ o modalitate simplฤ de a realiza acest lucru folosind clasa Enum ศi un pic de LINQ.
Sฤ explorฤm soluศia care face ca recuperarea valorii maxime a unei enumerฤri sฤ fie la fel de uศoarฤ ca o plฤcintฤ.
enumerare publicฤ MyEnum
{
Opศiunea 1 = 1,
Opศiunea 2 = 2,
Opศiunea 3 = 3
}
...
public int GetMaxEnumValue()
{
returneazฤ Enum.GetValues(typeof(MyEnum)).Cast().Max();
}
Aceastฤ scurtฤ bucatฤ de cod face toatฤ munca de a prelua cea mai mare valoare din enumerare. Dar cum funcศioneazฤ?
Scufundaศi-vฤ adรขnc รฎn cod
`Enum.GetValues(typeof(MyEnum))` este prima piesฤ criticฤ de รฎnศeles. Aceastฤ metodฤ .NET รฎncorporatฤ returneazฤ un Array care conศine valorile constantelor dintr-o enumerare specificatฤ. Tipul de enumerare este transmis ca parametru metodei folosind cuvรขntul cheie `typeof`.
Odatฤ ce avem matricea, trebuie sฤ o transformฤm รฎn numere รฎntregi. Acest lucru se face folosind .Cast() care face parte din LINQ (Language Integrated Query). LINQ este un set de tehnici ศi metode รฎn .NET care ne permite sฤ lucrฤm cu datele รฎntr-un mod mai intuitiv ศi mai flexibil.
Dupฤ turnarea valorilor รฎn numere รฎntregi, obศinerea valorii maxime este la fel de simplฤ ca apelarea metodei .Max(), un alt instrument excelent oferit de LINQ. Aceastฤ metodฤ returneazฤ valoarea maximฤ dintr-o colecศie de valori int.
Utilizarea bibliotecilor Enum ศi LINQ
Clasa Enum este o parte a spaศiului de nume System din .NET ศi oferฤ mai multe metode statice de lucru cu enumerari. Este biblioteca de bazฤ atunci cรขnd trebuie sฤ efectuaศi orice operaศie legatฤ de tipurile de enumerare.
Pe de altฤ parte, LINQ, parte a spaศiului de nume System.Linq, este una dintre cele mai puternice caracteristici ale C#. Oferฤ diverse metode pentru a gestiona eficient colecศiile, cum ar fi obศinerea valorilor maxime, minime sau medii, sortarea ศi filtrarea datelor.
Citeste mai mult