Uzyskanie maksymalnej wartoลci z typu wyliczeniowego jest czฤstym zadaniem, z ktรณrym spotykajฤ
siฤ programiลci. Jest to wymagane w scenariuszach, w ktรณrych trzeba sprawdziฤ poprawnoลฤ danych wejลciowych uลผytkownika lub obsลuลผyฤ okreลlone zasoby na podstawie wartoลci wyliczenia. C# zapewnia prosty sposรณb osiฤ
gniฤcia tego celu przy uลผyciu klasy Enum i odrobiny LINQ.
Przyjrzyjmy siฤ rozwiฤ
zaniu, ktรณre sprawia, ลผe โโuzyskanie maksymalnej wartoลci wyliczenia jest dziecinnie proste.
publiczne wyliczenie MojeEnum
{
Opcja 1 = 1,
Opcja 2 = 2,
Opcja 3 = 3
}
...
publiczna int GetMaxEnumValue()
{
zwrรณฤ Enum.GetValues(typeof(MyEnum)).Cast().Maks.();
}
Ten krรณtki fragment kodu wykonuje caลฤ
pracฤ polegajฤ
cฤ
na pobraniu najwyลผszej wartoลci z wyliczenia. Ale jak to dziaลa?
Gลฤboko zanurz siฤ w kodzie
`Enum.GetValues(typeof(MyEnum))` to pierwszy kluczowy element, ktรณry naleลผy zrozumieฤ. Ta wbudowana metoda .NET zwraca tablicฤ zawierajฤ
cฤ
wartoลci staลych w okreลlonym wyliczeniu. Typ wyliczeniowy jest przekazywany jako parametr do metody przy uลผyciu sลowa kluczowego โtypeofโ.
Gdy juลผ mamy tablicฤ, musimy rzuciฤ jฤ
na liczby caลkowite. Odbywa siฤ to za pomocฤ
metody .Cast() metoda bฤdฤ
ca czฤลciฤ
LINQ (Language Integrated Query). LINQ to zestaw technik i metod w .NET, ktรณry pozwala nam pracowaฤ z danymi w bardziej intuicyjny i elastyczny sposรณb.
Po rzutowaniu wartoลci na liczby caลkowite uzyskanie maksymalnej wartoลci jest tak proste, jak wywoลanie metody .Max(), kolejnego ลwietnego narzฤdzia udostฤpnianego przez LINQ. Ta metoda zwraca maksymalnฤ
wartoลฤ w kolekcji wartoลci int.
Korzystanie z bibliotek Enum i LINQ
Klasa Enum jest czฤลciฤ
przestrzeni nazw System w platformie .NET i udostฤpnia kilka statycznych metod pracy z wyliczeniami. Jest to biblioteka, do ktรณrej naleลผy siฤ udaฤ, gdy trzeba wykonaฤ dowolnฤ
operacjฤ zwiฤ
zanฤ
z typami wyliczeniowymi.
Z drugiej strony LINQ, czฤลฤ przestrzeni nazw System.Linq, jest jednฤ
z najpotฤลผniejszych funkcji jฤzyka C#. Zapewnia rรณลผne metody efektywnej obsลugi kolekcji, takie jak uzyskiwanie wartoลci maksymalnych, minimalnych i ลrednich, sortowanie i filtrowanie danych.
Czytaj wiฤcej