Dobijanje maksimalne vrijednosti iz tipa nabrajanja je uobičajen zadatak s kojim se susreću programeri. Ovo je potrebno u scenarijima u kojima trebate provjeriti valjanost korisničkog unosa ili rukovati određenim resursima na osnovu enum vrijednosti. C# pruža jednostavan način da se to postigne koristeći klasu Enum i malo LINQ-a.
Hajde da istražimo rešenje koje čini dohvat maksimalne vrednosti nabrajanja lakim kao kolač.
javni 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 preuzimanja najveće vrijednosti u enum-u. 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 navedenom nabrajanju. Tip nabrajanja se prosljeđuje kao parametar metodi koristeći ključnu riječ `typeof`.
Jednom kada imamo niz, moramo ga pretvoriti u cijele brojeve. Ovo se radi pomoću .Cast() metoda koja je dio LINQ-a (Language Integrated Query). LINQ je skup tehnika i metoda u .NET-u koji nam omogućava da radimo s podacima na intuitivniji i fleksibilniji način.
Nakon pretvaranja vrijednosti u cijele brojeve, dobijanje maksimalne vrijednosti je jednostavno kao pozivanje metode .Max(), još jednog sjajnog alata koji nudi LINQ. Ova metoda vraća maksimalnu vrijednost u kolekciji int vrijednosti.
Korištenje Enum i LINQ biblioteka
Klasa Enum je dio System imenskog prostora u .NET-u i pruža nekoliko statičkih metoda za rad sa nabrajanjima. To je biblioteka kada treba da izvršite bilo koju operaciju koja se odnosi na tipove enuma.
S druge strane, LINQ, dio imenskog prostora System.Linq, jedna je od najmoćnijih karakteristika C#-a. Obezbeđuje različite metode za efikasno rukovanje zbirkama, kao što je dobijanje maksimalnih, minimalnih ili prosečnih vrednosti, sortiranje i filtriranje podataka.
Čitaj više