Co nowego w języku C# 13
Język C# 13 zawiera następujące nowe funkcje. Możesz wypróbować te funkcje przy użyciu najnowszej wersji programu Visual Studio 2022 lub zestawu .NET 9 Preview SDK.
- Nowa sekwencja ucieczki —
\e
. - Ulepszenia typu naturalnego grupy metod
- Niejawny dostęp indeksatora w inicjatorach obiektów
Język C# 13 jest obsługiwany na platformie .NET 9. Aby uzyskać więcej informacji, zobacz Przechowywanie wersji języka C#.
Najnowszy zestaw SDK platformy .NET 9 w wersji zapoznawczej można pobrać ze strony pobierania platformy .NET. Możesz również pobrać program Visual Studio 2022 — wersja zapoznawcza, który zawiera zestaw SDK platformy .NET 9 (wersja zapoznawcza).
Nowe funkcje są dodawane do strony "Co nowego w języku C#", gdy są one dostępne w publicznej wersji zapoznawczej. Sekcja zestawu roboczego na stronie stanu funkcji roslyn śledzi po scaleniu nadchodzących funkcji z gałęzią główną.
Uwaga
Interesuje nas Twoja opinia na temat tych funkcji. Jeśli znajdziesz problemy z dowolną z tych nowych funkcji, utwórz nowy problem w repozytorium dotnet/roslyn .
Nowa sekwencja ucieczki
Możesz użyć \e
jako sekwencji ucieczki literału znaku dla ESCAPE
znaku Unicode U+001B
. Wcześniej użyto \u001b
polecenia lub \x1b
. Użycie \x1b
nie było zalecane, ponieważ jeśli następne znaki poniżej 1b
były prawidłowymi cyframi szesnastkowymi, te znaki stały się częścią sekwencji ucieczki.
Typ naturalny grupy metod
Ta funkcja sprawia, że małe optymalizacje w celu przeciążenia rozpoznawania obejmującego grupy metod. Poprzednie zachowanie dotyczyło kompilatora utworzenia pełnego zestawu metod kandydatów dla grupy metod. Jeśli potrzebny jest typ naturalny, typ naturalny został określony z pełnego zestawu metod kandydatów.
Nowe zachowanie polega na oczyszczeniu zestawu metod kandydatów w każdym zakresie, usuwając te metody kandydatów, które nie mają zastosowania. Zazwyczaj są to metody ogólne z niewłaściwą arity lub ograniczeniami, które nie są spełnione. Proces jest kontynuowany do następnego zakresu zewnętrznego tylko wtedy, gdy nie znaleziono żadnych metod kandydatów. Ten proces ściślej śledzi ogólny algorytm rozpoznawania przeciążenia. Jeśli wszystkie metody kandydatów znalezione w danym zakresie nie są zgodne, grupa metod nie ma typu naturalnego.
Szczegółowe informacje o zmianach w specyfikacji propozycji można znaleźć.
Niejawny dostęp do indeksu
Niejawny operator ^
indeksu "from the end" jest teraz dozwolony w wyrażeniu inicjatora obiektów. Można na przykład zainicjować tablicę w inicjatorze obiektu, jak pokazano w poniższym kodzie:
var v = new S()
{
buffer =
{
[^1] = 0,
[^2] = 1,
[^3] = 2,
[^4] = 3,
[^5] = 4,
[^6] = 5,
[^7] = 6,
[^8] = 7,
[^9] = 8,
[^10] = 9
}
};
W wersjach wcześniejszych niż C# 13 ^
operator nie może być używany w inicjatorze obiektów. Należy zaindeksować elementy z przodu.