Obtenir el valor màxim d'un tipus d'enumeració és una tasca habitual amb què es troben els desenvolupadors. Això és necessari en escenaris en què cal validar l'entrada de l'usuari o gestionar determinats recursos en funció del valor d'enum. C# proporciona una manera senzilla d'aconseguir-ho mitjançant la classe Enum i una mica de LINQ.
Explorem la solució que fa que la recuperació del valor màxim d'una enumeració sigui tan fàcil com un pastís.
enumeració pública MyEnum
{
Opció 1 = 1,
Opció 2 = 2,
Opció 3 = 3
}
...
public int GetMaxEnumValue()
{
retorna Enum.GetValues(typeof(MyEnum)).Cast().Max();
}
Aquest petit fragment de codi fa tot el treball de recuperar el valor més alt de la enumeració. Però com funciona?
Immersió profunda en el codi
El `Enum.GetValues(typeof(MyEnum))` és la primera peça crítica a entendre. Aquest mètode .NET integrat retorna una matriu que conté els valors de les constants en una enumeració especificada. El tipus d'enumeració es passa com a paràmetre al mètode mitjançant la paraula clau `typeof`.
Un cop tinguem la matriu, hem de convertir-la en nombres enters. Això es fa amb .Cast() que forma part de LINQ (Language Integrated Query). LINQ és un conjunt de tècniques i mètodes en .NET que ens permet treballar amb dades d'una manera més intuïtiva i flexible.
Després de convertir els valors en nombres enters, obtenir el valor màxim és tan senzill com cridar el mètode .Max(), una altra gran eina que ofereix LINQ. Aquest mètode retorna el valor màxim en una col·lecció de valors int.
Aprofitant les biblioteques Enum i LINQ
La classe Enum forma part de l'espai de noms del sistema a .NET i proporciona diversos mètodes estàtics per treballar amb enumeracions. És la biblioteca de referència quan necessiteu realitzar qualsevol operació relacionada amb els tipus d'enumeració.
D'altra banda, LINQ, part de l'espai de noms System.Linq, és una de les característiques més potents de C#. Proporciona diversos mètodes per gestionar les col·leccions de manera eficaç, com ara obtenir els valors màxims, mínims o mitjans, ordenar i filtrar dades.
Més...