24.01.20223 min

Mateusz JaroszRedakcja Bulldogjob

C# 11 – przegląd nadchodzących nowości

Premiera C# 11 nadchodzi wielkimi krokami. Przyjrzyjmy się bliżej, co tym razem przygotował dla nas Microsoft.

C# 11 – przegląd nadchodzących nowości

Miniony rok w deweloperskim ekosystemie Microsoftu obfitował w ważne wydarzenia, przede wszystkim za sprawą premiery .NET 6. Choć za sprawą przecieków niektórzy oczekiwali, że jeszcze w 2021 r. ukaże się kolejna wersja specyfikacji języka C#, dziś wiemy, że korporacja nie ma zamiaru odstępować od harmonogramu z rocznym interwałem. W efekcie nadal oczekujemy premiery C# 11. Warto więc przeanalizować listę nowości, gdyż niewykluczone, że premiera odbędzie się lada moment.


C# 11 – nowości

Całkiem pokaźną ilością informacji na temat nowego C# dysponujemy już za sprawą oficjalnej dokumentacji języka opublikowanej na GitHubie. Rzecz jasna do momentu lista nowości może się zmienić, jak bowiem naucza doświadczenie, raczej mało prawdopodobne jest, aby zespół nadzorujący rozwój C# zdążył dopracować i zaimplementować wszystkie planowane zmiany. Niemniej zapowiedziane zmiany mogą dla wielu okazać się ważne, gdyż wiążą się zarówno z doskonaleniem nowych funkcji dostępnych w wersji poglądowej w C# 10, jak i rozwiązaniu najczęściej występujących problemów.


Słowo kluczowe field

Być może najważniejszą i najbardziej oczekiwaną przez programistów nowością jest implementacja słowa kluczowego field. Co prawda miało się ono pojawić już w C# 10, ale MIcrosoft nie zdążył na premierę i można z dużą pewnością stwierdzić, że będzie to jeden z kluczowych elementów na liście nowości C# 11. 

Dzięki słowu kluczowemu field możliwe będzie tworzenie właściwości łącznie z instrukcjami get/set. Dzięki słowu field będą one mogły automatycznie tworzyć pole typu backing, które w stosunku do zmiennych będzie miał takie same możliwości, jak value dla właściwości:

public string PropertyConstraint {
   get;
   set => field = value ?? throw new ArgumentNullException();
} = "";


Atrybuty generyczne

Za ważną nowość w nadchodzącej nowej wersji C# należy uznać dodanie atrybutów generycznych, choć w finalnej specyfikacji języka będą one dostępne najpewniej w wersji testowej. Atrybuty generyczne miały pojawić się w języku już w udostępnionej w listopadzie wersji 10, niemniej ich niekompatybilność z niektórymi narzędziami deweloperskimi sprawiła, że Microsoft zdecydował się na opóźnienie implementacji. 

W praktyce dostępność atrybutów generycznych w C# ma na celu wyeliminowanie sytuacji, kiedy typy referencyjne przyjmują następującą przykładową postać: [TypeConverter(typeof(X))].

W tej sytuacji brakuje bowiem gwarancji, że typ odpowiada wymaganiom atrybutu. Twórcy zauważyli także, że składnia jest dość rozwlekła, a przecież C# miał być językiem czytelnym i relatywnie prostym w nauce. Dzięki typom referencyjnym kod będzie nie tylko prostszy, ale umożliwione zostanie także ograniczenie typów w atrybutach powiązanych z typami referencyjnymi. Finalnie przykład przybierze następującą postać [TypeConverter<X>].


Nowości we wzorcach

Nowości nie ominęły także obsługi wzorców projektowych w C#. Język będzie obsługiwał wzorce semantyczne, jak i syntaktyczne zarówno w przypadku tablic, jak i typów indeksowanych, niemniej dostrzeżono tu przestrzeń dla ulepszeń. W rezultacie w C# 11 możliwe będzie dopasowanie tablicy lub listy ze względu właśnie na wzorzec. 

Twórcy informują jednak, że trwają wciąż prace nad dostosowaniem do nowych potrzeb interfejsu IEnumerable, przez co może się okazać, że nowość pojawi się dopiero w kolejnej odsłonie C#. Podobnie sprawy mają się z licznymi pomniejszymi nowościami, z których pełną listą można zapoznać się dzięki oficjalnej dokumentacji.

<p>Loading...</p>