Odkrijte, kako bodo prihajajoče spremembe izboljšale vašo kodo in olajšale vaše življenje razvijalca.

Pricurljale so podrobnosti o težko pričakovanem predogledu C# 12, ki daje vpogled v prihajajoče funkcije, ki bi morale spremeniti jezik. Te funkcije veliko obetajo za izboljšanje berljivosti kode, optimizacijo delovanja in odklepanje naprednih zmogljivosti jezika.

Izboljšani stikalni izrazi

Predstavljen C# 8 osnovni stikalni izrazi ki vam omogočajo, da zapleteno pogojno logiko izrazite jedrnato, v berljivi obliki. C# 12 to popelje še dlje z uvedbo nove sintakse za ujemanje vzorcev za preklopne izraze, kar še olajša pisanje ekspresivne in jedrnate kode.

Razmislite o naslednjem izrezku kode.

var rezultat = obj stikalo
{
int jaz kdaj jaz > 0 => "pozitivno",
int jaz kdaj jaz < 0 => "Negativno",
_ => "nič"
};

Ta koda uporablja preklopne izraze, da ugotovi, ali je celo število pozitivno, negativno, oz nič. V C# 12 lahko to kodo še bolj poenostavite z uporabo nove sintakse za ujemanje vzorcev:

var rezultat = obj stikalo
{
> 0 => "pozitivno",
< 0 => "Negativno",
_ => "nič"
};

Ta sintaksa vam omogoča, da izpustite kdaj in uporabite relacijske operatorje neposredno v izrazu stikala.

Primarni konstruktorji za razrede in strukture

Zdaj lahko ustvarite primarne konstruktorje v katerem koli razred oz struct (alternativa lahkega razreda). Z uporabo primarnih konstruktorjev lahko dodate parametre v deklaracijo razreda in uporabite te vrednosti v telesu razreda.

C# 9 je predstavil primarne konstruktorje kot del pozicijske sintakse za zapise. C# 12 jih razširi na vse strukture in razrede.

Parametre lahko postavite za imenom tipa v oklepajih, kot je prikazano spodaj:

javnosti razred študent(int id, vrvica ime, IEnumerable<decimalno> ocene)
{
javnostištudent(int id, vrvica ime): to(id, ime, Enumerable. Prazno<decimalno>()) { }
javnostiint Id => id;
javnostivrvica ime { dobiti; set; } = ime. Obrezovanje();
javnostidecimalno GPA => ocene. Kaj()? ocene. Povprečje(): 4.0m;
}

Parametri primarnega konstruktorja so v obsegu celotnega telesa deklaracijskega tipa. Lastnosti ali polja lahko nastavite ali pa jih uporabite v metodah ali lokalnih funkcijah kot spremenljivke. Te parametre lahko posredujete tudi osnovnemu konstruktorju.

Izboljšave interpoliranih nizov

Interpolirani nizi obstajajo že od C# 6. V C# 12 lahko zdaj ustvarite dinamične vrednosti za nize z uporabo zapletenih izrazov.

int jaz = 5;
vrvica izhod = $"Vrednost i je {jaz}, njegov kvadrat pa je {i*i}.";
Konzola. WriteLine (izhod);

Ta koda natisne "Vrednost i je 5, njegov kvadrat pa 25".

Uporaba direktiv za dodatne tipe

S C# 12 lahko uporabite direktivo using alias za vzdevek kateremu koli tipu, ne le imenovanim tipom. Ustvarite lahko semantične vzdevke za tuple, nize, kazalce ali druge nevarne vrste.

Tukaj je nekaj primerov:

uporabo Meritev = (vrvica enote, int Razdalja);
uporabo UnitsInt = int?;
Primer uporabe vzdevkov:
javnostiprazninaIzračun(Merjenje merjenje)
{
// Telo metode
}

Izboljšave lambda izraza

C# 12 krepi lambda izraze tako, da vam omogoča definiranje privzetih vrednosti za parametre. Sintaksa je enaka sintaksi drugih privzetih parametrov:

na primer (int incrementTo = 5) => incrementTo + 1 nastavi privzeto vrednost 5 za parameter incrementTo, ki ga bo uporabil klic lambda, če mu ne posredujete vrednosti.

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

Poleg tega je prišlo do številnih drugih izboljšav lambda izrazov, da bi bili učinkovitejši.

Na primer:

  • Zdaj lahko ustvarite bolj zapletene izraze znotraj lambda funkcij.
  • Zdaj lahko pretvorite lambda izraze v izrazna drevesa, ki poenostavijo zapletene poizvedbe in optimizirajo zmogljivost.

Asinhroni tokovi

Z novim lahko ponavljate asinhrone vire podatkov asinhroni tokovi značilnost C# 12. Ta novi iterator—počakaj foreach— vam pomaga iterirati čez niz asinhronih podatkov:

čakatiza vsakogar (var postavka vGetItemsAsync())
{
Konzola. WriteLine (element.vrednost);
}

C# 12: Revolucionarna koda z vznemirljivimi novimi funkcijami

V pričakovanju C# 12 lahko pričakujete posodobitev, ki bo spremenila igro z razburljivimi novimi funkcijami. Ti napredki, kot so izboljšani preklopni izrazi, primarni konstruktorji in izboljšave lambda izrazov, kažejo močno osredotočenost na preprostost kode, prilagodljivost in zmogljivost.

C# 12 je pripravljen narediti pomemben korak naprej, saj vam omogoča pisanje bolj izrazite, učinkovite in zmogljive kode.