Ota selvää, kuinka tulevat muutokset parantavat koodiasi ja tekevät elämästäsi kehittäjänä hieman helpompaa.

Erittäin odotetun C# 12 Preview'n yksityiskohdat ovat vuotaneet, ja ne antavat kurkistuksen tuleviin ominaisuuksiin, joiden pitäisi mullistaa kielen. Näillä ominaisuuksilla on suuri lupaus parantaa koodin luettavuutta, optimoida suorituskykyä ja vapauttaa kielen edistyneitä ominaisuuksia.

Parannetut kytkinlausekkeet

C# 8 esitelty peruskytkinlausekkeet joiden avulla voit ilmaista monimutkaista ehdollista logiikkaa ytimekkäästi, luettavassa muodossa. C# 12 vie tätä pidemmälle ottamalla käyttöön uuden mallinsovitussyntaksin kytkinlausekkeille, mikä tekee ilmeikkäästä ja ytimekkäästä koodin kirjoittamisesta entistäkin helpompaa.

Harkitse seuraavaa koodinpätkää.

var tulos = obj vaihtaa
{
int i kun minä > 0 => "positiivinen",
int i kun minä < 0 => "Negatiivinen",
_ => "Nolla"
};

Tämä koodi käyttää kytkinlausekkeita määrittääkseen, onko kokonaisluku positiivinen, negatiivinen, tai nolla. C# 12:ssa voit yksinkertaistaa tätä koodia entisestään käyttämällä uutta mallia vastaavaa syntaksia:

instagram viewer
var tulos = obj vaihtaa
{
> 0 => "positiivinen",
< 0 => "Negatiivinen",
_ => "Nolla"
};

Tämän syntaksin avulla voit jättää pois kun avainsanaa ja käytä relaatiooperaattoreita suoraan kytkinlausekkeessa.

Luokkien ja rakenteiden ensisijaiset rakentajat

Voit nyt luoda ensisijaiset rakentajat mihin tahansa luokkaa tai struct (kevytluokan vaihtoehto). Ensisijaisten konstruktorien avulla voit lisätä parametreja luokkailmoitukseen ja käyttää näitä arvoja luokan rungossa.

C# 9 esitteli ensisijaiset rakentajat osana tietueiden sijaintisyntaksia. C# 12 laajentaa nämä kaikkiin rakenteisiin ja luokkiin.

Voit laittaa parametrit tyypin nimen jälkeen suluissa alla olevan kuvan mukaisesti:

julkinen luokkaa Opiskelija(int id, merkkijono nimi, IEnumerable<desimaali> arvosanat)
{
julkinenOpiskelija(int id, merkkijono nimi): Tämä(id, nimi, numeroitu. Tyhjä<desimaali>()) { }
julkinenint Id => id;
julkinenmerkkijono nimi { saada; aseta; } = nimi. Trimmata();
julkinendesimaali GPA => arvosanat. Minkä tahansa()? arvosanat. Keskiverto(): 4.0m;
}

Ensisijaisen konstruktorin parametrit ovat laajuudeltaan koko ilmoittavan tyypin koko rungossa. Voit määrittää ominaisuuksia tai kenttiä tai käyttää niitä myös menetelmissä tai paikallisissa funktioissa muuttujina. Voit antaa nämä parametrit myös peruskonstruktorille.

Interpoloitujen merkkijonojen parannukset

Interpoloidut merkkijonot ovat olleet olemassa C#6:sta lähtien. C# 12:ssa voit nyt luoda dynaamisia arvoja merkkijonoille käyttämällä monimutkaisia ​​lausekkeita.

int minä = 5;
merkkijono lähtö = $"I: n arvo on {i}, ja sen neliö on {i*i}.";
Konsoli. WriteLine (tulostus);

Tämä koodi tulostaa "I: n arvo on 5 ja sen neliö on 25".

Ohjeiden käyttäminen lisätyypeille

C# 12:ssa voit käyttää alias-direktiiviä minkä tahansa tyypin aliakseksi, ei vain nimettyjen tyyppien nimeämiseen. Voit luoda semanttisia aliaksia monikoille, taulukoille, osoittimille tai muille vaarallisille tyypeille.

Tässä on muutamia esimerkkejä:

käyttämällä Mittaus = (merkkijono Yksiköt, int Etäisyys);
käyttämällä UnitsInt = int?;
Esimerkki aliasten käytöstä:
julkinenmitätönLaskeminen(Mittausmittaus)
{
// Method Body
}

Lambda-ilmaisun parannukset

C# 12 mahdollistaa lambda-lausekkeiden käytön sallimalla parametrien oletusarvojen määrittämisen. Syntaksi on identtinen muiden oletusparametrien kanssa:

Esimerkiksi, (incrementTo = 5) => incrementTo + 1 asettaa oletusarvon 5 incrementTo-parametrille, jota lambda-kutsu käyttää, jos et välitä sille arvoa.

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

Sen lisäksi lambda-ilmaisuihin tehtiin monia muita parannuksia niiden tehostamiseksi.

Esimerkiksi:

  • Voit nyt luoda monimutkaisempia lausekkeita lambda-funktioissa.
  • Voit nyt muuntaa lambda-lausekkeet lausekepuiksi, jotka yksinkertaistavat monimutkaisia ​​kyselyitä ja optimoivat suorituskyvyn.

Async Streams

Voit iteroida asynkronisten tietolähteiden kautta uudella asynkroniset streamit C# 12:n ominaisuus. Tämä uusi iteraattori -odota etukäteen-auttaa iteroimaan asynkronisten tietojen joukon:

odottaajokaiselle (var kohde sisäänGetItemsAsync())
{
Konsoli. WriteLine (kohde.arvo);
}

C# 12: Mullistava koodi jännittävillä uusilla ominaisuuksilla

Odottaessasi C# 12:ta voit odottaa pelin muuttavan päivityksen jännittävin uusin ominaisuuksin. Nämä edistysaskeleet, kuten parannetut kytkinlausekkeet, ensisijaiset konstruktorit ja parannukset lambda-lausekkeisiin, osoittavat vahvan keskittymisen koodin yksinkertaisuuteen, joustavuuteen ja suorituskykyyn.

C# 12 on valmis tuomaan merkittävän harppauksen eteenpäin, jolloin voit kirjoittaa ilmaisuvoimaisempaa, tehokkaampaa ja tehokkaampaa koodia.