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