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.

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.

Zobacz też