Descoperiți cum modificările viitoare vă vor îmbunătăți codul și vă vor face viața de dezvoltator puțin mai ușoară.
S-au scurs detalii despre foarte așteptatul C# 12 Preview, oferind o perspectivă asupra funcțiilor viitoare care ar trebui să revoluționeze limbajul. Aceste caracteristici sunt foarte promițătoare pentru îmbunătățirea lizibilității codului, optimizarea performanței și deblocarea capabilităților avansate ale limbajului.
Expresii de comutare îmbunătățite
C# 8 introdus expresii de comutare de bază care vă permit să exprimați logica condiționată complexă în mod concis, într-o formă lizibilă. C# 12 duce acest lucru mai departe, introducând o nouă sintaxă de potrivire a modelelor pentru expresiile comutatoare, făcând și mai ușor să scrie cod expresiv și concis.
Luați în considerare următorul fragment de cod.
var rezultat = obj intrerupator
{
int i când eu > 0 => "Pozitiv",
int i când eu < 0 => "Negativ",
_ => "Zero"
};
Acest cod folosește expresii de comutare pentru a determina dacă un număr întreg este
pozitiv, negativ, sau zero. În C# 12, puteți simplifica acest cod și mai mult folosind noua sintaxă de potrivire a modelelor:var rezultat = obj intrerupator
{
> 0 => "Pozitiv",
< 0 => "Negativ",
_ => "Zero"
};
Această sintaxă vă permite să omiteți când cuvântul cheie și utilizați operatori relaționali direct în expresia comutator.
Constructori primari pentru clase și structuri
Acum puteți crea constructori primari în oricare clasă sau struct (o alternativă de clasă ușoară). Folosind constructori primari, puteți adăuga parametri la declarația clasei și puteți utiliza aceste valori în corpul clasei.
C# 9 a introdus constructorii primari ca parte a sintaxei poziționale pentru înregistrări. C# 12 le extinde la toate structurile și clasele.
Puteți pune parametrii după numele tipului între paranteze, așa cum se arată mai jos:
public clasă Student(int id, şir nume, IEnumerable<zecimal> note)
{
publicStudent(int id, şir Nume): acest(id, nume, Enumerable. Gol<zecimal>()) { }
publicint Id => id;
publicşir Nume { obține; a stabilit; } = nume. Tunde();
publiczecimal GPA => note. Orice()? note. In medie(): 4.0m;
}
Parametrii unui constructor primar sunt în domeniul de aplicare în întregul corp al tipului declarant. Puteți configura proprietăți sau câmpuri sau le puteți utiliza și în metode sau funcții locale ca variabile. Puteți furniza acești parametri și unui constructor de bază.
Îmbunătățiri ale șirurilor interpolate
Șirurile interpolate există încă din C# 6. În C# 12, acum puteți crea valori dinamice pentru șiruri folosind expresii complicate.
int i = 5;
şir ieșire = $"Valoarea lui i este {i}, iar pătratul său este {i*i}.";
Consolă. WriteLine (ieșire);
Acest cod afișează „Valoarea lui i este 5 și pătratul său este 25”.
Utilizarea directivelor pentru tipuri suplimentare
Cu C# 12, puteți utiliza directiva using alias pentru a alia orice tip, nu doar tipurile numite. Puteți crea aliasuri semantice pentru tupluri, matrice, pointeri sau alte tipuri nesigure.
Iată câteva exemple:
folosind Măsurare = (şir unități, int Distanţă);
folosind UnitsInt = int?;
Exemplu de utilizare a aliasurilor:
publicgolCalcul(Măsurarea măsurătorilor)
{
// Corpul metodei
}
Îmbunătățiri ale expresiei Lambda
C# 12 împuternicește expresiile lambda, permițându-vă să definiți valorile implicite pentru parametri. Sintaxa este identică cu cea a altor parametri impliciti:
De exemplu, (int incrementTo = 5) => incrementTo + 1 setează o valoare implicită de 5 pentru parametrul incrementTo, pe care apelul lambda îl va folosi dacă nu îi transmiteți o valoare.
var incrementWithDefault = (int incrementTo = 5) => incrementTo + 1;
incrementWithDefault(); // 6
incrementWithDefault(9); // 10
Pe lângă asta, multe alte îmbunătățiri au venit la expresiile lambda pentru a le face mai eficiente.
De exemplu:
- Acum puteți crea expresii mai complexe în cadrul funcțiilor lambda.
- Acum puteți transforma expresiile lambda în arbori de expresii care simplifică interogările complexe și optimizează performanța.
Fluxuri asincrone
Puteți itera prin surse de date asincrone cu noul fluxuri asincrone caracteristica C# 12. Acest nou iterator—așteaptă de fiecare dată— vă ajută să repetați un set de date asincrone:
așteaptăpentru fiecare (var articol înGetItemsAsync())
{
Consolă. WriteLine (articol.valoare);
}
C# 12: Revoluționează codul cu funcții noi interesante
În așteptarea C# 12, vă puteți aștepta la o actualizare care va schimba jocul, cu noi funcții interesante. Aceste progrese, cum ar fi expresii de comutare îmbunătățite, constructori primari și îmbunătățiri ale expresiilor lambda, indică o concentrare puternică pe simplitatea, flexibilitatea și performanța codului.
C# 12 este gata să ofere un salt înainte semnificativ, permițându-vă să scrieți cod mai expresiv, mai eficient și mai puternic.