Fedezze fel, hogy a közelgő változtatások hogyan javítják a kódot, és egy kicsit megkönnyítik fejlesztői életét.

A várva várt C# 12 Preview részletei kiszivárogtak, bepillantást engedve a közelgő funkciókba, amelyek forradalmasítják a nyelvet. Ezek a funkciók nagy ígéretet jelentenek a kód olvashatóságának javítása, a teljesítmény optimalizálása és a nyelv fejlett képességeinek felszabadítása terén.

Továbbfejlesztett kapcsolókifejezések

Bemutatták a C#8-at alapvető kapcsoló kifejezések amelyek lehetővé teszik az összetett feltételes logika tömör, olvasható formában történő kifejezését. A C# 12 ezt továbbviszi azáltal, hogy új mintaillesztő szintaxist vezet be a switch kifejezésekhez, így még könnyebbé válik a kifejező és tömör kód írása.

Tekintsük a következő kódrészletet.

var eredmény = obj kapcsoló
{
int én amikor én > 0 => "Pozitív",
int én amikor én < 0 => "Negatív",
_ => "Nulla"
};

Ez a kód switch kifejezéseket használ annak meghatározására, hogy egy egész szám az pozitív, negatív, vagy nulla

instagram viewer
. A C# 12-ben még tovább egyszerűsítheti ezt a kódot az új mintaillesztő szintaxis használatával:

var eredmény = obj kapcsoló
{
> 0 => "Pozitív",
< 0 => "Negatív",
_ => "Nulla"
};

Ez a szintaxis lehetővé teszi a amikor kulcsszót, és használjon relációs operátorokat közvetlenül a switch kifejezésben.

Elsődleges konstruktorok osztályokhoz és struktúrákhoz

Mostantól bármilyen elsődleges konstruktort létrehozhat osztály vagy struct (egy könnyűsúlyú alternatíva). Az elsődleges konstruktorok használatával paramétereket adhat hozzá az osztálydeklarációhoz, és ezeket az értékeket használhatja az osztálytörzsben.

A C# 9 bevezette az elsődleges konstruktőröket a rekordok helyzeti szintaxisának részeként. A C# 12 kiterjeszti ezeket az összes struktúrára és osztályra.

A paramétereket a típusnév után zárójelbe teheti az alábbiak szerint:

nyilvános osztály Diák(int azonosító, húr név, IEnumerable<decimális> osztályzatok)
{
nyilvánosDiák(int azonosító, húr név): ez(azonosító, név, felsorolható. Üres<decimális>()) { }
nyilvánosint Id => id;
nyilvánoshúr Név { kap; készlet; } = név. Trim();
nyilvánosdecimális GPA => osztályzat. Bármi()? évfolyamok. Átlagos(): 4.0m;
}

Az elsődleges konstruktor paraméterei a deklaráló típus teljes törzsében érvényesek. Tulajdonságokat vagy mezőket állíthat be, vagy változóként metódusokban vagy helyi függvényekben is felhasználhatja. Ezeket a paramétereket megadhatja egy alapkonstruktornak is.

Az interpolált karakterláncok fejlesztései

Az interpolált karakterláncok a C#6 óta léteznek. A C# 12-ben mostantól dinamikus értékeket hozhat létre a karakterláncokhoz bonyolult kifejezések használatával.

int i = 5;
húr kimenet = $"Az i értéke {én}, négyzete pedig az {i*i}.";
Konzol. WriteLine (kimenet);

Ez a kód kiírja, hogy "i értéke 5, négyzete 25".

Irányelvek használata további típusokhoz

A C# 12-vel a using alias direktíva bármilyen típus álnevére használható, nem csak az elnevezett típusok. Létrehozhat szemantikai álneveket sorokhoz, tömbökhöz, mutatókhoz vagy más nem biztonságos típusokhoz.

Íme néhány példa:

segítségével Mérés = (húr Egységek, int Távolság);
segítségével UnitsInt = int?;
Példa az álnevek használatára:
nyilvánosüresSzámítás(Mérés mérés)
{
// Módszer törzs
}

Lambda-kifejezési fejlesztések

A C# 12 felhatalmazza a lambda kifejezéseket azáltal, hogy lehetővé teszi a paraméterek alapértelmezett értékeinek meghatározását. A szintaxis megegyezik a többi alapértelmezett paraméterével:

Például, (incrementTo = 5) => incrementTo + 1 az incrementTo paraméter alapértelmezett értéke 5, amelyet a lambda hívás akkor használ, ha nem ad át neki értéket.

var incrementWithDefault = (int incrementTo = 5) => incrementTo + 1;
incrementWithDefault(); // 6
incrementWithDefault(9); // 10

Ezen kívül sok más fejlesztés is történt a lambda kifejezésekhez, hogy hatékonyabbá tegyék őket.

Például:

  • Mostantól összetettebb kifejezéseket is létrehozhat a lambda függvényeken belül.
  • Mostantól átalakíthatja a lambda-kifejezéseket kifejezésfákká, amelyek leegyszerűsítik az összetett lekérdezéseket és optimalizálják a teljesítményt.

Aszinkron adatfolyamok

Iterálhat az aszinkron adatforrásokon keresztül az új aszinkron adatfolyamok a C# 12 jellemzője. Ez az új iterátor –előre várni– segíti az iterációt az aszinkron adatok halmazán:

várjaaz egyes (var tétel ban benGetItemsAsync())
{
Konzol. WriteLine (tétel.érték);
}

C# 12: Forradalmasító kód izgalmas új funkciókkal

A C# 12-re számítva egy játékot megváltoztató frissítésre számíthatsz izgalmas új funkciókkal. Ezek a fejlesztések, például a továbbfejlesztett kapcsolókifejezések, az elsődleges konstruktorok és a lambda-kifejezések fejlesztései azt jelzik, hogy nagy hangsúlyt fektetnek a kód egyszerűségére, rugalmasságára és teljesítményére.

A C# 12 jelentős előrelépést jelent, lehetővé téve kifejezőbb, hatékonyabb és erőteljesebb kód írását.