Oppdag hvordan kommende endringer vil forbedre koden din og gjøre livet ditt som utvikler litt enklere.
Detaljer om den etterlengtede C# 12 Preview har lekket, og gir en sniktitt på kommende funksjoner som burde revolusjonere språket. Disse funksjonene gir gode løfter for å forbedre kodelesbarheten, optimalisere ytelsen og låse opp avanserte funksjoner i språket.
Forbedrede bryteruttrykk
C# 8 introdusert grunnleggende bytteuttrykk som lar deg uttrykke kompleks betinget logikk konsist, i en lesbar form. C# 12 tar dette videre ved å introdusere en ny mønstertilpasningssyntaks for bytteuttrykk, noe som gjør det enda enklere å skrive ekspressiv og konsis kode.
Tenk på følgende kodebit.
var resultat = obj bytte om
{
int Jeg når jeg > 0 => "positiv",
int Jeg når jeg < 0 => "Negativ",
_ => "Null"
};
Denne koden bruker bryteruttrykk for å bestemme om et heltall er positivt, negativ, eller null. I C# 12 kan du forenkle denne koden ytterligere ved å bruke den nye mønstertilpasningssyntaksen:
var resultat = obj bytte om
{
> 0 => "positiv",
< 0 => "Negativ",
_ => "Null"
};
Denne syntaksen lar deg utelate når nøkkelord og bruk relasjonsoperatorer direkte i bryteruttrykket.
Primære konstruktører for klasser og konstruksjoner
Du kan nå lage primære konstruktører i hvilken som helst klasse eller struct (et alternativ i lettvektsklassen). Ved å bruke primære konstruktører kan du legge til parametere i klassedeklarasjonen og bruke disse verdiene inne i klassekroppen.
C# 9 introduserte primære konstruktører som en del av den posisjonelle syntaksen for poster. C# 12 utvider disse til alle strukturer og klasser.
Du kan sette parameterne etter typenavnet i parentes som vist nedenfor:
offentlig klasse Student(int id, streng navn, IEnumerable<desimal> karakterer)
{
offentligStudent(int id, streng Navn): dette(id, navn, Enumerable. Tomt<desimal>()) { }
offentligint Id => id;
offentligstreng Navn { få; sett; } = navn. Listverk();
offentligdesimal GPA => karakterer. Noen()? karakterer. Gjennomsnitt(): 4.0m;
}
Parametrene til en primær konstruktør er i omfang gjennom hele den deklarerende typens kropp. Du kan sette opp egenskaper eller felt eller kan også bruke dem i metoder eller lokale funksjoner som variabler. Du kan også gi disse parameterne til en basiskonstruktør.
Interpolerte strenger forbedringer
Interpolerte strenger har eksistert siden C# 6. I C# 12 kan du nå lage dynamiske verdier for strenger ved å bruke kompliserte uttrykk.
int jeg = 5;
streng utgang = $"Verdien av i er {Jeg}, og kvadratet er {i*i}.";
Konsoll. WriteLine (utgang);
Denne koden skriver ut "Verdien av i er 5, og kvadratet er 25".
Bruk av direktiver for tilleggstyper
Med C# 12 kan du bruke bruksalias-direktivet til å kalle alle typer, ikke bare navngitte typer. Du kan lage semantiske aliaser for tupler, arrays, pekere eller andre usikre typer.
Her er noen eksempler:
ved hjelp av Mål = (streng Enheter, int Avstand);
ved hjelp av UnitsInt = int?;
Eksempel på bruk av aliaser:
offentligtomromBeregning(Måling måling)
{
// Metode Body
}
Lambda-uttrykksforbedringer
C# 12 gir lambda-uttrykk ved å la deg definere standardverdiene for parametere. Syntaksen er identisk med den for andre standardparametere:
For eksempel, (int incrementTo = 5) => incrementTo + 1 angir en standardverdi på 5 for incrementTo-parameteren, som lambda-kallet vil bruke hvis du ikke gir den en verdi.
var incrementWithDefault = (int inkrementTil = 5) => økerTil + 1;
incrementWithDefault(); // 6
incrementWithDefault(9); // 10
Utenom det kom mange andre forbedringer til lambda-uttrykk for å gjøre dem mer effektive.
For eksempel:
- Du kan nå lage mer komplekse uttrykk innenfor lambda-funksjoner.
- Du kan nå transformere lambda-uttrykk til uttrykkstrær som forenkler komplekse spørringer og optimerer ytelsen.
Asynkrone strømmer
Du kan iterere gjennom asynkrone datakilder med den nye asynkrone strømmer funksjonen til C# 12. Denne nye iteratoren—avvente foreach— hjelper deg å iterere over et sett med asynkrone data:
avventefor hver (var punkt iGetItemsAsync())
{
Konsoll. WriteLine (element.verdi);
}
C# 12: Revolusjonerende kode med spennende nye funksjoner
I påvente av C# 12 kan du forvente en oppdatering som forandrer spillet med spennende nye funksjoner. Disse fremskrittene, som forbedrede bryteruttrykk, primære konstruktører og forbedringer av lambda-uttrykk, indikerer et sterkt fokus på kodeens enkelhet, fleksibilitet og ytelse.
C# 12 er klar til å gi et betydelig sprang fremover, slik at du kan skrive mer uttrykksfull, effektiv og kraftig kode.