Megosztás a következőn keresztül:


A C# 13 újdonságai

A C# 13 az alábbi új funkciókat tartalmazza. Ezeket a funkciókat a Visual Studio 2022 legújabb verziójával vagy a .NET 9 előzetes verziójú SDK-val is kipróbálhatja.

A C# 13 támogatott a .NET 9-ben. További információ: C# nyelvi verziószámozás.

A .NET 9 legújabb előzetes verziójú SDK-ját a .NET letöltési oldaláról töltheti le. Letöltheti a Visual Studio 2022 előzetes verzióját is, amely tartalmazza a .NET 9 előzetes verziójú SDK-t.

Az új funkciók akkor jelennek meg a "Újdonságok a C#-ban" oldalon, ha nyilvános előzetes kiadásokban érhetők el. A roslyn funkció állapotlapjának munkakészlet szakasza nyomon követi, ha a közelgő funkciók egyesülnek a főággal.

Feljegyzés

Szeretnénk visszajelzést küldeni ezekről a funkciókról. Ha problémákat talál az új funkciók bármelyikével kapcsolatban, hozzon létre egy új problémát a dotnet/roslyn-adattárban .

Új menekülési sorozat

Karakterkonstans feloldósorozatként használható \e a ESCAPE Unicode U+001Bkarakterhez. Korábban használt \u001b vagy \x1b. A használat \x1b nem ajánlott, mert ha a következő 1b karakterek érvényes hexadecimális számjegyek voltak, ezek a karakterek a feloldósorozat részévé váltak.

Metóduscsoport természetes típusa

Ez a funkció kis optimalizálásokat tesz lehetővé, hogy túlterhelje a megoldásokat a metóduscsoportok bevonásával. Az előző viselkedés az volt, hogy a fordító egy metóduscsoporthoz a jelölt metódusok teljes készletét hozta létre. Ha természetes típusra volt szükség, a természetes típust a jelölt módszerek teljes készletéből határozták meg.

Az új viselkedés az, hogy az egyes hatókörökben meg kell metszeni a jelölt metódusokat, eltávolítva azokat a jelölt metódusokat, amelyek nem alkalmazhatók. Ezek általában olyan általános metódusok, amelyek nem megfelelő aritású, vagy nem teljesülnek. A folyamat csak akkor folytatódik a következő külső hatókörrel, ha nem talált jelölt metódusokat. Ez a folyamat jobban követi az általános algoritmust a túlterhelés feloldásához. Ha egy adott hatókörben található összes jelölt metódus nem egyezik, a metóduscsoport nem rendelkezik természetes típussal.

A módosítások részleteit a javaslat specifikációjában olvashatja el.

Implicit indexhozzáférés

Az implicit "from the end" indexoperátor ^mostantól engedélyezett egy objektum inicializáló kifejezésében. Most például inicializálhat egy tömböt egy objektum inicializálójában az alábbi kódban látható módon:

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
    }
};

A C# 13 előtti verziókban az ^ operátor nem használható objektum-inicializálóban. Az elemeket elölről kell indexelnie.

Lásd még