Dobivanje maksimalne vrijednosti iz tipa enumeracije čest je zadatak s kojim se programeri susreću. Ovo je potrebno u scenarijima u kojima morate potvrditi korisnički unos ili rukovati određenim resursima na temelju enum vrijednosti. C# pruža jednostavan način da se to postigne korištenjem klase Enum i malo LINQ-a.
Istražimo rješenje koje dohvaćanje maksimalne vrijednosti enumeracije čini jednostavnim poput pite.
javna enum MyEnum
{
Opcija 1 = 1,
Opcija 2 = 2,
Opcija 3 = 3
}
...
public int GetMaxEnumValue()
{
return Enum.GetValues(typeof(MyEnum)).Cast().Max();
}
Ovaj kratki dio koda obavlja sav posao dohvaćanja najveće vrijednosti u enumu. Ali kako to funkcionira?
Duboko zaronite u kod
`Enum.GetValues(typeof(MyEnum))` je prvi kritični dio koji treba razumjeti. Ova ugrađena .NET metoda vraća niz koji sadrži vrijednosti konstanti u određenom enumeriranju. Tip nabrajanja prosljeđuje se kao parametar metodi pomoću ključne riječi `typeof`.
Kada imamo niz, moramo ga pretvoriti u cijele brojeve. To se radi pomoću .Cast() metoda koja je dio LINQ (Language Integrated Query). LINQ je skup tehnika i metoda u .NET-u koji nam omogućuje rad s podacima na intuitivniji i fleksibilniji način.
Nakon pretvaranja vrijednosti u cijele brojeve, dobivanje maksimalne vrijednosti jednostavno je poput pozivanja metode .Max(), još jednog sjajnog alata koji pruža LINQ. Ova metoda vraća maksimalnu vrijednost u kolekciji int vrijednosti.
Iskorištavanje biblioteka Enum i LINQ
Klasa Enum dio je imenskog prostora sustava u .NET-u i pruža nekoliko statičkih metoda za rad s enumeracijama. To je knjižnica koju trebate koristiti kada trebate izvršiti bilo koju operaciju vezanu uz enum tipove.
S druge strane, LINQ, dio imenskog prostora System.Linq, jedna je od najmoćnijih značajki C#. Omogućuje različite metode za učinkovito rukovanje zbirkama, kao što je dobivanje maksimalnih, minimalnih ili prosječnih vrijednosti, sortiranje i filtriranje podataka.
opširnije