Zรญskรกnรญ maximรกlnรญ hodnoty z typu vรฝฤtu je bฤลพnรฝ รบkol, se kterรฝm se vรฝvojรกลi setkรกvajรญ. To je vyลพadovรกno ve scรฉnรกลรญch, kde potลebujete ovฤลit uลพivatelskรฝ vstup nebo zpracovat urฤitรฉ prostลedky na zรกkladฤ hodnoty enum. C# poskytuje pลรญmรฝ zpลฏsob, jak toho dosรกhnout pomocรญ tลรญdy Enum a trochu LINQ.
Pojฤme prozkoumat ลeลกenรญ, dรญky kterรฉmu je zรญskรกnรญ maximรกlnรญ hodnoty vรฝฤtu snadnรฉ jako facka.
veลejnรฝ vรฝฤet MyEnum
{
Moลพnost 1 = 1,
Moลพnost 2 = 2,
Moลพnost 3 = 3
}
...
public int GetMaxEnumValue()
{
return Enum.GetValues(typeof(MyEnum)).Cast().Max();
}
Tento krรกtkรฝ kรณd provede veลกkerou prรกci pลi zรญskรกvรกnรญ nejvyลกลกรญ hodnoty ve vรฝฤtu. Ale jak to funguje?
Ponoลte se hluboko do kรณdu
`Enum.GetValues(typeof(MyEnum))` je prvnรญm kritickรฝm dรญlem, kterรฉmu je tลeba porozumฤt. Tato vestavฤnรก metoda .NET vracรญ pole obsahujรญcรญ hodnoty konstant v zadanรฉm vรฝฤtu. Typ vรฝฤtu je pลedรกn jako parametr metodฤ pomocรญ klรญฤovรฉho slova `typeof`.
Jakmile mรกme pole, musรญme ho pลetypovat na celรก ฤรญsla. To se provรกdรญ pomocรญ .Cast() metoda, kterรก je souฤรกstรญ LINQ (Language Integrated Query). LINQ je soubor technik a metod v .NET, kterรฝ nรกm umoลพลuje pracovat s daty intuitivnฤjลกรญm a flexibilnฤjลกรญm zpลฏsobem.
Po pลetypovรกnรญ hodnot na celรก ฤรญsla je zรญskรกnรญ maximรกlnรญ hodnoty stejnฤ jednoduchรฉ jako volรกnรญ metody .Max(), coลพ je dalลกรญ skvฤlรฝ nรกstroj od LINQ. Tato metoda vracรญ maximรกlnรญ hodnotu v kolekci hodnot int.
Vyuลพitรญ knihoven Enum a LINQ
Tลรญda Enum je souฤรกstรญ jmennรฉho prostoru System v .NET a poskytuje nฤkolik statickรฝch metod pro prรกci s vรฝฤty. Je to knihovna, do kterรฉ mลฏลพete pลejรญt, kdyลพ potลebujete provรฉst jakoukoli operaci souvisejรญcรญ s typy vรฝฤtu.
Na druhou stranu LINQ, souฤรกst jmennรฉho prostoru System.Linq, je jednou z nejvรฝkonnฤjลกรญch funkcรญ C#. Poskytuje rลฏznรฉ metody pro efektivnรญ zpracovรกnรญ kolekcรญ, jako je zรญskรกvรกnรญ maximรกlnรญch, minimรกlnรญch nebo prลฏmฤrnรฝch hodnot, ลazenรญ a filtrovรกnรญ dat.
Vรญce