Avastage, kuidas eelseisvad muudatused parandavad teie koodi ja muudavad teie elu arendajana veidi lihtsamaks.

Oodatud C# 12 eelvaate üksikasjad on lekkinud, andes pilgu eelseisvatesse funktsioonidesse, mis peaksid keelt revolutsiooniliselt muutma. Nendel funktsioonidel on palju lubadusi koodi loetavuse parandamiseks, jõudluse optimeerimiseks ja keele täiustatud võimaluste avamiseks.

Täiustatud lüliti väljendused

Kasutusele võetud C#8 põhilised lüliti väljendid mis võimaldavad teil keerulist tingimusloogikat lühidalt ja loetaval kujul väljendada. C# 12 viib seda edasi, tutvustades lülitiavaldiste jaoks uut mustrite sobitamise süntaksit, muutes ekspressiivse ja kokkuvõtliku koodi kirjutamise veelgi lihtsamaks.

Kaaluge järgmist koodilõiku.

var tulemus = obj lüliti
{
int i millal ma > 0 => "Positiivne",
int i millal ma < 0 => "Negatiivne",
_ => "Null"
};

See kood kasutab lülitusavaldisi, et teha kindlaks, kas täisarv on positiivne, negatiivne, või null. C# 12-s saate seda koodi veelgi lihtsustada, kasutades uut mustri sobitamise süntaksit:

instagram viewer
var tulemus = obj lüliti
{
> 0 => "Positiivne",
< 0 => "Negatiivne",
_ => "Null"
};

See süntaks võimaldab teil välja jätta millal märksõna ja kasutage relatsioonioperaatoreid otse switchi avaldises.

Klasside ja struktuuride põhikonstruktorid

Nüüd saate luua peamisi konstruktoreid mis tahes klass või struct (kergekaaluklassi alternatiiv). Esmaste konstruktorite abil saate lisada klassi deklaratsioonile parameetreid ja kasutada neid väärtusi klassi kehas.

C# 9 tutvustas esmaseid konstruktoreid kirjete positsioonisüntaksi osana. C# 12 laiendab neid kõikidele struktuuridele ja klassidele.

Parameetrid saate panna tüübi nime järele sulgudesse, nagu allpool näidatud:

avalik klass Üliõpilane(int id, string nimi, IEnumerable<kümnend> hinded)
{
avalikÜliõpilane(int id, string nimi): see(id, nimi, loendatav. Tühi <kümnend>()) { }
avalikint Id => id;
avalikstring nimi { saada; seatud; } = nimi. Kärbi ();
avalikkümnend GPA => hinded. mõni ()? hinded. Keskmine(): 4.0m;
}

Esmase konstruktori parameetrid on hõlmatud kogu deklareeriva tüübi kehas. Saate seadistada atribuute või välju või kasutada neid muutujatena meetodites või kohalikes funktsioonides. Saate need parameetrid anda ka baaskonstruktorile.

Interpoleeritud stringide täiustused

Interpoleeritud stringid on olnud kasutusel alates C#6-st. C# 12-s saate nüüd luua keeruliste avaldiste abil stringidele dünaamilisi väärtusi.

int i = 5;
string väljund = $ "I väärtus on {i}, ja selle ruut on {i*i}.";
konsool. WriteLine (väljund);

See kood prindib "I väärtus on 5 ja selle ruut on 25".

Täiendavate tüüpide direktiivide kasutamine

C# 12 abil saate kasutada pseudonüümi käskkirja mis tahes tüüpi pseudonüümideks, mitte ainult nimeliste tüüpide jaoks. Saate luua semantilisi varjunimesid korteežide, massiivide, osutite või muude ohtlike tüüpide jaoks.

Siin on mõned näited.

kasutades Mõõtmine = (string Ühikud, int Kaugus);
kasutades UnitsInt = int?;
Varjunimede kasutamise näide:
avaliktühineArvutus(Mõõtmine mõõtmine)
{
// Meetodi korpus
}

Lambda väljenduse täiustused

C# 12 annab võimaluse lambda-avaldistele, võimaldades teil määratleda parameetrite vaikeväärtused. Süntaks on identne teiste vaikeparameetrite süntaksiga:

Näiteks, (incrementTo = 5) => incrementTo + 1 määrab parameetri incrementTo vaikeväärtuseks 5, mida lambda-kutse kasutab, kui te sellele väärtust ei edasta.

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

Lisaks sellele tehti lambda-väljenditele palju muid täiustusi, et muuta need tõhusamaks.

Näiteks:

  • Nüüd saate lambda-funktsioonides luua keerukamaid avaldisi.
  • Nüüd saate lambda-avaldisi teisendada avaldispuudeks, mis lihtsustavad keerulisi päringuid ja optimeerivad jõudlust.

Asünkroonsed vood

Saate itereerida asünkroonsete andmeallikate kaudu uuega asünkroonsed vood C# 12 funktsioon. See uus iteraator -ootama ette– aitab teil asünkroonitud andmete kogumit itereerida:

ootamaigaühele (var üksus sisseGetItemsAsync())
{
konsool. WriteLine (üks.väärtus);
}

C# 12: Revolutsiooniline kood põnevate uute funktsioonidega

C# 12 ootuses võite oodata mängu muutvat värskendust põnevate uute funktsioonidega. Need edusammud, nagu täiustatud lülitiavaldised, esmased konstruktorid ja lambda-avaldiste täiustused, näitavad suurt keskendumist koodi lihtsusele, paindlikkusele ja jõudlusele.

C# 12 on valmis tegema märkimisväärse arenguhüppe, võimaldades teil kirjutada väljendusrikkamat, tõhusamat ja võimsamat koodi.