Otkrijte kako će nadolazeće promjene poboljšati vaš kod i učiniti vaš život programera još malo lakšim.

Pojedinosti o dugo očekivanom C# 12 Previewu su procurile, dajući kratak uvid u nadolazeće značajke koje bi trebale revolucionirati jezik. Ove značajke mnogo obećavaju za poboljšanje čitljivosti koda, optimiziranje performansi i otključavanje naprednih mogućnosti jezika.

Poboljšani Switch Expressions

Predstavljen C# 8 osnovni prekidački izrazi koji vam omogućuju da složenu uvjetnu logiku izrazite sažeto, u čitljivom obliku. C# 12 ide dalje uvođenjem nove sintakse za usklađivanje uzoraka za switch izraze, što dodatno olakšava pisanje ekspresivnog i sažetog koda.

Razmotrite sljedeći isječak koda.

var rezultat = obj sklopka
{
int ja kada ja > 0 => "Pozitivan",
int ja kada ja < 0 => "Negativan",
_ => "Nula"
};

Ovaj kod koristi switch izraze kako bi odredio je li cijeli broj pozitivan, negativan, ili nula. U C# 12 ovaj kod možete dodatno pojednostaviti pomoću nove sintakse za usklađivanje uzoraka:

var rezultat = obj sklopka
{
> 0 => "Pozitivan",
< 0 => "Negativan",
_ => "Nula"
};

Ova sintaksa omogućuje izostavljanje kada ključnu riječ i koristite relacijske operatore izravno u izrazu switch.

Primarni konstruktori za klase i strukture

Sada možete stvoriti primarne konstruktore u bilo kojem razreda ili struct (alternativa lagane klase). Koristeći primarne konstruktore, možete dodati parametre u deklaraciju klase i koristiti te vrijednosti unutar tijela klase.

C# 9 je uveo primarne konstruktore kao dio pozicione sintakse za zapise. C# 12 ih proširuje na sve strukture i klase.

Možete staviti parametre iza naziva tipa u zagrade kao što je prikazano u nastavku:

javnost razreda Student(int iskaznica, niz ime, IEnumerable<decimal> ocjene)
{
javnostStudent(int iskaznica, niz Ime): ovaj(id, ime, Nabrojivi. Prazan<decimal>()) { }
javnostint Id => id;
javnostniz Ime { dobiti; postaviti; } = ime. Trim();
javnostdecimal GPA => ocjene. Bilo koji()? ocjene. Prosjek(): 4.0m;
}

Parametri primarnog konstruktora nalaze se u opsegu kroz cijelo tijelo deklarirajućeg tipa. Možete postaviti svojstva ili polja ili ih također možete koristiti u metodama ili lokalnim funkcijama kao varijable. Možete dati ove parametre i osnovnom konstruktoru.

Poboljšanja interpoliranih nizova

Interpolirani nizovi postoje od C# 6. U C# 12 sada možete stvarati dinamičke vrijednosti za nizove pomoću kompliciranih izraza.

int ja = 5;
niz izlaz = $"Vrijednost i je {i}, a njegov kvadrat je {i*i}.";
Konzola. WriteLine (izlaz);

Ovaj kod ispisuje "Vrijednost i je 5, a njegov kvadrat je 25".

Korištenje direktiva za dodatne tipove

Uz C# 12, možete koristiti naredbu using alias za alias bilo kojeg tipa, a ne samo imenovanih tipova. Možete stvoriti semantičke aliase za skupove, nizove, pokazivače ili druge nesigurne tipove.

Evo nekoliko primjera:

korištenjem Mjerenje = (niz Jedinice, int Udaljenost);
korištenjem JediniceInt = int?;
Primjer upotrebe aliasa:
javnostponištitiKalkulacija(Mjerenje mjerenja)
{
// Tijelo metode
}

Poboljšanja lambda izraza

C# 12 osnažuje lambda izraze dopuštajući vam da definirate zadane vrijednosti za parametre. Sintaksa je identična sintaksi ostalih zadanih parametara:

Na primjer, (int incrementTo = 5) => incrementTo + 1 postavlja zadanu vrijednost 5 za parametar incrementTo, koji će lambda poziv koristiti ako mu ne proslijedite vrijednost.

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

Osim toga, mnoga su druga poboljšanja došla do lambda izraza kako bi bili učinkovitiji.

Na primjer:

  • Sada možete stvarati složenije izraze unutar lambda funkcija.
  • Sada možete transformirati lambda izraze u stabla izraza koja pojednostavljuju složene upite i optimiziraju izvedbu.

Asinkroni tokovi

Možete iterirati kroz asinkrone izvore podataka s new asinkroni tokovi značajka C# 12. Ovaj novi iterator—čekati foreach— pomaže vam u iteraciji preko skupa asinkronih podataka:

čekatiza svakoga (var artikal uGetItemsAsync())
{
Konzola. WriteLine (stavka.vrijednost);
}

C# 12: Revolucioniranje koda s uzbudljivim novim značajkama

U iščekivanju C# 12, možete očekivati ​​ažuriranje koje će promijeniti igru ​​s uzbudljivim novim značajkama. Ova poboljšanja, kao što su poboljšani izrazi prekidača, primarni konstruktori i poboljšanja lambda izraza, ukazuju na snažan fokus na jednostavnost koda, fleksibilnost i izvedbu.

C# 12 spreman je napraviti značajan korak naprijed, omogućujući vam pisanje ekspresivnijeg, učinkovitijeg i moćnijeg koda.