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.
Proฤitaj viลกe