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