Neuroróżnorodność w miejscu pracy
15.11.20232 min
Bulldogjob

Bulldogjob

Nowości w C# 12 - krok naprzód w programowaniu obiektowym

Poznaj nowe funkcje w nowo wydanym C# 12. Wśród nich wyrażenia kolekcji, konstruktory podstawowe i ulepszenia wydajności.

Nowości w C# 12 - krok naprzód w programowaniu obiektowym

Koniec roku to już tradycyjnie nowa wersja .NET i C#. Tegoroczne update'y zotały właśnie wydane! Microsoft opisuje, że to wydanie to prostsza składania i lepsza wydajność. Dlatego na spokojnie przyjrzymy się najważniejszym aspektom C# 12 oraz dowiemy się, jakie nowości przynosi ta aktualizacja.

Wyrażenia kolekcji

Do tej pory kolekcje w C# tworzyło się na bardzo różne sposoby. Np:

int[] x1 = new int[] { 1, 2, 3, 4 };
int[] x2 = Array.Empty<int>();

W C# 12 dostępne są wyrażenia kolekcji (collection expressions), które uspójniają składnię tworzenia kolekcji:

int[] x1 = [1, 2, 3, 4];
int[] x2 = [];

Więc niezależnie od tego jakiej kolekcji potrzeba, to składnia będzie taka sama, a kompilator zoptymalizuje wykorzystanie danych.

Konstruktory podstawowe

Jednym z kluczowych ulepszeń wprowadzonych w C# 12 są konstruktory podstawowe dostępny dla wszystkich klas i struktur. Nie są one już ograniczone wyłącznie do typu record

Konstruktor podstawowy definiuje się przez dodanie parametrów przy nazwie klasy:

public class Item(string name)
{
    public string Name => name;
}

Przekazane w ten sposób parametry można używać w całym ciele klasy, np. do inicjalizacji właściwości czy pól. Taki konstruktor wskazuje na to, że te parametry są potrzebne w każdej instancji typu i muszą zostać nadane.

Domyślne parametry w wyrażeniach lambda

C# 12 wprowadza również obsługę domyślnych parametrów w wyrażeniach lambda. Składnia i reguły działania są podobne do dodawania wartości domyślnych dla argumentów dowolnej metody lub funkcji lokalnej.

Aliasy dla dowolnych typów

Kolejnym istotnym ulepszeniem w C# 12 jest możliwość tworzenia aliasów dla dowolnych typów za pomocą dyrektywy using. Teraz można tworzyć aliasy dla typów takich jak krotki, tablice, wskaźniki oraz innych typów, które wcześniej były niedostępne dla aliasów.

Tablice wbudowane

Tablice wbudowane (inline arrays) to ważny element wprowadzony w C# 12. Mają na celu zwiększenie wydajności aplikacji. Dokumentacja nie wskazuje na to, że będziemy mieli na co dzień do czynienia z ich deklarowaniem, a po prostu będziemy mieli nieco szybsze biblioteki. To dlatego, że pozwalają na tworzenie tablic o stałym rozmiarze wewnątrz typu struct. A taka możliwość sprawia, że całość jest bardziej wydajna.

Przechwytywanie kodu za pomocą Interceptors

C# 12 wprowadza eksperymentalną metodę, zwaną "przechwytywaniem" (interceptors), która umożliwia przechwytywanie i zmianę kodu w czasie kompilacji. Interceptors ma zastosowanie głównie w generowaniu kodu źródłowego. Niewiadomo, jaka będzie jej przyszłość w kolejnych wersjach, więc lepiej nie testuj tej metody w środowisku produkcyjnym!

Podsumowanie

Jeśli już mieliście okazję przetestować, zachęcamy do podzielenia się swoimi doświadczeniami w komentarzach.


Przeczytaj też:

<p>Loading...</p>