Ontdek hoe komende wijzigingen uw code zullen verbeteren en uw leven als ontwikkelaar net dat beetje makkelijker zullen maken.

Details van de langverwachte C# 12 Preview zijn uitgelekt, wat een voorproefje geeft van aankomende functies die de taal radicaal zouden moeten veranderen. Deze functies zijn veelbelovend voor het verbeteren van de leesbaarheid van code, het optimaliseren van de prestaties en het ontsluiten van geavanceerde mogelijkheden van de taal.

Verbeterde Switch-expressies

C# 8 geïntroduceerd elementaire schakeluitdrukkingen waarmee u complexe voorwaardelijke logica beknopt kunt uitdrukken, in een leesbare vorm. C# 12 gaat hier nog een stap verder door een nieuwe patroon-matching syntaxis voor switch-expressies te introduceren, waardoor het nog gemakkelijker wordt om expressieve en beknopte code te schrijven.

Beschouw het volgende codefragment.

var resultaat = obj schakelaar
{
int i wanneer ik > 0 => "Positief",
int i wanneer ik < 0 => "Negatief",
_ => "Nul"
};

Deze code gebruikt schakelexpressies om te bepalen of een geheel getal is

instagram viewer
positief, negatief, of nul. In C# 12 kunt u deze code nog verder vereenvoudigen met behulp van de nieuwe patroonvergelijkingssyntaxis:

var resultaat = obj schakelaar
{
> 0 => "Positief",
< 0 => "Negatief",
_ => "Nul"
};

Met deze syntaxis kunt u de wanneer trefwoord en gebruik relationele operatoren rechtstreeks in de switch-expressie.

Primaire constructors voor klassen en structuren

U kunt nu primaire constructors maken in elk klas of struct (een lichtgewicht klasse alternatief). Met behulp van primaire constructors kunt u parameters toevoegen aan de klassendeclaratie en deze waarden gebruiken in de hoofdtekst van de klasse.

C# 9 introduceerde primaire constructors als onderdeel van de positionele syntaxis voor records. C# 12 breidt deze uit naar alle structuren en klassen.

U kunt de parameters achter de typenaam tussen haakjes plaatsen, zoals hieronder weergegeven:

openbaar klas Student(int ID kaart, snaar naam, IEnumerable<decimale> cijfers)
{
openbaarStudent(int ID kaart, snaar naam): dit(id, naam, opsombaar. Leeg<decimale>()) { }
openbaarint Identiteitskaart => identiteitskaart;
openbaarsnaar Naam { krijgen; set; } = naam. Bijsnijden();
openbaardecimale GPA => cijfers. Elk()? cijfers. Gemiddeld(): 4.0M;
}

De parameters van een primaire constructor vallen binnen de hele body van het declarerende type. U kunt eigenschappen of velden instellen of ze ook als variabelen gebruiken in methoden of lokale functies. U kunt deze parameters ook aan een basisconstructor doorgeven.

Verbeteringen in geïnterpoleerde tekenreeksen

Geïnterpoleerde tekenreeksen bestaan ​​al sinds C# 6. In C# 12 kunt u nu dynamische waarden voor tekenreeksen maken met ingewikkelde uitdrukkingen.

int ik = 5;
snaar uitgang = $"De waarde van i is {i}, en het vierkant is {i*i}.";
Troosten. WriteLine (uitvoer);

Deze code drukt af: "De waarde van i is 5, en het kwadraat is 25".

Richtlijnen gebruiken voor aanvullende typen

Met C# 12 kunt u de alias-richtlijn gebruiken om elk type een alias te geven, niet alleen benoemde typen. U kunt semantische aliassen maken voor tuples, arrays, pointers of andere onveilige typen.

Hier zijn een paar voorbeelden:

gebruik makend van Meting = (snaar Eenheden, int Afstand);
gebruik makend van EenhedenInt = int?;
Voorbeeld van gebruik van aliassen:
openbaarleegteBerekening(Meting meting)
{
// Methode lichaam
}

Lambda-expressieverbeteringen

C# 12 maakt lambda-expressies mogelijk doordat u de standaardwaarden voor parameters kunt definiëren. De syntaxis is identiek aan die van andere standaardparameters:

Bijvoorbeeld, (int incrementTo = 5) => incrementTo + 1 stelt een standaardwaarde van 5 in voor de parameter incrementTo, die de lambda-aanroep zal gebruiken als u er geen waarde aan doorgeeft.

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

Daarnaast zijn er veel andere verbeteringen aangebracht aan lambda-expressies om ze effectiever te maken.

Bijvoorbeeld:

  • U kunt nu complexere expressies maken binnen lambda-functies.
  • U kunt nu lambda-expressies omzetten in expressiebomen die complexe query's vereenvoudigen en de prestaties optimaliseren.

Asynchrone streams

U kunt itereren door asynchrone gegevensbronnen met de nieuwe asynchrone streams kenmerk van C# 12. Deze nieuwe iterator—wacht op elkaar—helpt u bij het herhalen van een set asynchrone gegevens:

wachtenvoor elk (var item inGetItemsAsync())
{
Troosten. Schrijfregel (item.waarde);
}

C# 12: revolutionaire code met opwindende nieuwe functies

In afwachting van C# 12 kun je een baanbrekende update verwachten met opwindende nieuwe functies. Deze vorderingen, zoals verbeterde switch-expressies, primaire constructors en verbeteringen aan lambda-expressies, wijzen op een sterke focus op de eenvoud, flexibiliteit en prestaties van code.

C# 12 staat op het punt een grote sprong voorwaarts te maken, waardoor u expressievere, efficiëntere en krachtigere code kunt schrijven.