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