Project Roslyn is eindelijk beschikbaar. Met één druk op de knop publiceerde Anders Heilsberg met enig gevoel voor dramatiek, live voor het publiek, de code van Project Roslyn. Zoals je wellicht in mijn vorige blog hebt gelezen, is dat het compiler platform van .Net. Wat betekent dat nu voor de toekomst van C#?



Compiler platform
Niet alleen de toekomst van C# overigens. Want zoals Microsoft aangaf, ook de toekomst van VB, "because, yes, it’s got one”. Deze toekomst is dus gebaseerd op Roslyn, het compiler platform. Dit platform is open source en kan dus door iedereen aangevuld worden. De toekomst is daarmee ongewis, maar belooft wel interessant te worden. Niet alleen nieuwe language features zijn mogelijk door middel van Roslyn, maar ook uitbreidingen op de tools die de compiler gebruiken zoals Visual Studio. Een voorbeeld is het maken van je eigen coding standards checker. Stel je hebt het volgende stuk code:
 
Door dat de accolades weg zijn gelaten, wordt de code er niet duidelijker op. De "else” hoort namelijk bij de tweede "if” en niet bij de eerste, zoals het nu lijkt te zijn. Daarom maken we een uitbreiding op VS die dit detecteert en direct een verbetering kan toepassen.



Er komen golfjes onder de if statement en er komt een lampje met de voorstelde verbetering. Super handig en met een paar regels code te bouwen. Hieronder zie je een screenshot van het project. De "CodeFixProvider” heeft een "AnalyseNode” methode. Deze controleert of de node (het te analyseren stuk code) een if statement is, maar geen if-block bevat. Als dat zo is generen we een Diagnostic (tip) dat dit anders zou moeten.
 
 
In de "GetFixAsync” methode zien we vervolgens hoe de node (code die niet in accolades valt) vervangen wordt door een If-block statement (en daarmee wel accolades bevat).


En zo zijn er nog veel meer voorbeelden te bedenken natuurlijk
Language features

De afgelopen jaren (en zeker het afgelopen jaar) heeft Microsoft veel tijd gestoken in project Roslyn. Daarmee is er minder tijd over gebleven voor het bouwen van nieuwe feature in C#. Het goede nieuws daarbij is dat er waarschijnlijk de komende tijd ontzettend veel leuke nieuwe features bij gaan komen omdat iedereen die zich geroepen voelt, nu ook daadwerkelijk kan bijdragen.Toch zijn er wel een aantal nieuwe features gepresenteerd. Hieronder een overzicht.Voor VB.Net : Select Case op Type. Je hoeft het type dus niet eerst om te zetten naar een string om het in een select case te kunnen gebruiken.
 
 Naast Hexadecimale waardes kunnen we nu ook binaire waardes noteren

.
Using van Static types zoals Math en Console zodat je deze classes in de code niet meer hoeft uit te typen.

 
Als je kijkt naar de volgende class, zie je dat er 2 properties zijn, die readonly zijn, maar geïnitialiseerd dienen te worden. Daarom kunnen het geen automatisch properties zijn en moeten de private fields ook aangemaakt worden.
 
Dit soort code zie je vaak terug en daarom hebben ze het veel simpeler gemaakt: De class bevat direct de argumenten die je normaal bij de contructor zouden staan en de auto-parameters kunnen eenvoudig worden geïnitialiseerd.

 
En het volgende stuk code:

 
Kan een stuk worden vergemakkelijkt door dat de indexers voortaan kunnen worden geïnitialiseerd en als tevens als property kunnen worden aangesproken door middel van een $ teken.
 


Kortom, dit is nog maar het begin van een golf nieuwe "goodies” die we kunnen verwachten. Hopelijk komt er veel moois op ons af.