DevelopmentNieuwe ontwikkelingen in C# 12

Ontwikkelingen in C#12

Tijdens de .NET Conf heeft Microsoft een nieuwe versie van C# uitgebracht, C# 12. In deze nieuwe release heeft Microsoft weer een aantal nieuwe features geïntroduceerd om de programmeertaal te verrijken. In deze blog bespreek ik er een aantal en hoe deze je code kunnen verbeteren.

 

Primary Constructors

Met primary constructors kunnen we het initiëren van attributen binnen een class vereenvoudigen. Dit is met name interessant voor een class met veel properties. Bij het een aanmaken van een object met veel properties zal de constructor er normaal gesproken zo uitzien:

Constructor voor C# 12

Dit levert aardig wat code op! Door een primary constructor te gebruiken kunnen we het definiëren en initialiseren van de properties binnen de constructor zelf doen.  Hierdoor hebben we minder code nodig en wordt het ook leesbaarder en consistenter. Een primary constructor zou er als volgt uitzien voor het voorgaande voorbeeld:

Primary Constructor C# 12

Voorheen waren primary constructors alleen beschikbaar voor Records. Een record is een immutable value type, dus eenmaal gecreëerd kan de waarde ervan niet meer worden aangepast.

 

Collection expressions

Collection expressions zijn bedoeld om collecties, zoals Arrays, Spans en Lists met een simpelere syntax initialiseren. Door de nieuwe syntax wordt code leesbaarder. Voor C# 12 werd uitgebracht, maakte we collections, zoals Arrays, Spans en Lists, als volgt aan:

Om een nieuwe Array of List te creëren specificeren we het type of gebruiken we een var, maar is het ook nodig om new int[] of new list<string> te declareren. Met collections expressions heb je new en het type niet meer nodig. Je kunt collecties nu als volgt aanmaken:

Collection expressions C# 12

Verder is ook de spread operator nieuw. Hiermee kun je een andere collectie van hetzelfde type toevoegen aan een tweede collectie (bijv. een array aan een list). Middels "..(naam collectie)" kunnen we collectie 1 toevoegen aan collectie 2. In het voorbeeld hieronder wordt een array toegevoegd aan een list:

Spread operator C# 12

Default Lambda parameters

Met Default Lambda parameters kun je nu default waarden definiëren voor parameters in lambda expressies. Qua gebruik is het vergelijkbaar het definiëren van een default waarde voor een parameter in een methode. Je moet de waarde van de parameter te specificeren (zie voorbeeld):

default lambda parameters C#

Wanneer nu de lambda expressie wordt gebruikt zonder een waarde mee te geven, is de output System. Als de waarde wel wordt gespecificeerd, dan wordt de default waarde niet gebruikt.

 

Inline arrays

Met Inline Arrays kan een array worden gecreëerd met een vaste grootte in een struct. Het voordeel hiervan is dat het een value type is. Geheugen wordt dan toegewezen aan de stack i.p.v. op de heap. Het geheugen van je applicatie wordt efficiënter gebruikt. Een inline array maak je als volgt aan:

Inline array C# 12

Het bovenstaande voorbeeld kan op een zelfde manier worden gebruikt als een normale array, maar zonder de grootte te hoeven definiëren. Verder heeft een inline array geen .Length attribuut en kan er geen LINQ worden gebruikt. Voorbeeld:

 

Experimental attribute

Met het Experimental attribute kun je aangeven dat een type, methode of assemblies experimentele features zijn die in de toekomst wellicht wijzigen of worden verwijderd. The compiler geeft een waarschuwing wanneer je gebruikt maakt van iets met dit attribuut. Bijvoorbeeld:

experimental attribute C# 12

 

Aliassen voor types

In de vorige versies van C# konden we al aliassen gebruiken voor ingebouwde types, zoals bijvoorbeeld bij System:

Aliassen voor C# 12

Deze feature is uitgebreid naar tuples, arrays, pointers en potentieel gevaarlijke types (nullable reference types uitgezonderd). Een alias declareer je in de usings sectie van je class. Een alias kan ook worden gebruikt als parameter in een methode. Een voorbeeld van hoe je het gebruikt:

Aliassen C# 12

Door aliases te gebruiken voor verschillende object types kunnen we onze code cleaner maken en makkelijk om te lezen.

 

Conclusie

Dit is maar een aantal van de nieuwe features die je nu al kunt gaan gebruiken. Om meer te leren over het gebruik van deze features en andere veranderingen, kun je de officiële documentatie van Microsoft lezen.

Gideon Kuijpers – Software developer

  • Wil jij ook dagelijks Mederne Applicaties bouwen? Bekijk vacatures!