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ż: