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รครค