Maksimiarvon saaminen luettelotyypistä on yleinen tehtävä, jonka kehittäjät kohtaavat. Tämä on tarpeen skenaarioissa, joissa sinun on tarkistettava käyttäjän syöte tai käsiteltävä tiettyjä resursseja enum-arvon perusteella. C# tarjoaa yksinkertaisen tavan saavuttaa tämä käyttämällä Enum-luokkaa ja vähän LINQ:ta.
Tutkitaan ratkaisua, joka tekee luettelon maksimiarvon hakemisesta yhtä helppoa kuin piirakka.
julkinen enum MyEnum
{
Vaihtoehto 1 = 1,
Vaihtoehto 2 = 2,
Vaihtoehto 3 = 3
}
...
julkinen int GetMaxEnumValue()
{
palauttaa Enum.GetValues(tyyppi(OmaEnum)).Cast().Max();
}
Tämä lyhyt koodinpätkä tekee kaiken työn hakeakseen enumin korkeimman arvon. Mutta miten se toimii?
Sukella syvälle koodiin
"Enum.GetValues(typeof(MyEnum))" on ensimmäinen tärkeä ymmärrettävä osa. Tämä sisäänrakennettu .NET-menetelmä palauttaa taulukon, joka sisältää vakioiden arvot määritetyssä luettelossa. Luettelotyyppi välitetään parametrina menetelmälle "typeof"-avainsanalla.
Kun meillä on taulukko, meidän on heitettävä se kokonaislukuihin. Tämä tehdään käyttämällä .Castia() -menetelmä, joka on osa LINQ:ta (Language Integrated Query). LINQ on joukko .NET:n tekniikoita ja menetelmiä, joiden avulla voimme työskennellä tietojen kanssa intuitiivisemmalla ja joustavammalla tavalla.
Kun arvot on heitetty kokonaislukuihin, maksimiarvon saaminen on yhtä helppoa kuin kutsua .Max()-metodi, toinen LINQ:n tarjoama loistava työkalu. Tämä menetelmä palauttaa maksimiarvon int-arvojen joukossa.
Enum- ja LINQ-kirjastojen hyödyntäminen
Enum-luokka on osa .NET:n System-nimiavaruutta ja tarjoaa useita staattisia menetelmiä luetteloiden käsittelyyn. Se on kirjasto, jossa sinun on suoritettava mitä tahansa enum-tyyppeihin liittyviä toimintoja.
Toisaalta System.Linq-nimiavaruuteen kuuluva LINQ on yksi C#:n tehokkaimmista ominaisuuksista. Se tarjoaa erilaisia menetelmiä kokoelmien tehokkaaseen käsittelyyn, kuten enimmäis-, vähimmäis- tai keskiarvojen saamiseen, tietojen lajitteluun ja suodattamiseen.
Lue lisää