Bookmark and Share

Svårighetsgrad
Svårighetsgrad
Betyg (1 röster)
BetygBetygBetygBetygBetyg
 

Jämförelse mellan versioner av .NET

Inledning

Vad har egentligen skett i utveckling mellan olika versioner av .NET? Om du vill kalla dig utvecklare med fokus på .NET så bör du ha lite koll på nyheterna i de olika versionerna.

Vi skall i denna artikel gå igenom de förbättringar som språket C# har försetts med från version 2.0 till version 4.5. Vi kan inte lista alla ändringar utan nöjer oss med de viktigaste. Varje förbättring kan i sig ta mycket plats att gå igenom i detalj så endast enklare förklaring erbjuds.

.NET 2.0

.NET 2.0 kom i slutet av 2005 tillsammans med Visual Studio 2005. Detta var den första versionen av .NET som fick en större spridning. Det var först nu som språket utvecklats och berikats med funktioner som gör det användbart.

Template-klasser

Ett typiskt exempel är alla lagringsklasser, t.ex. List. Innan template-klasser introducerades så fick man använda object väldigt mycket oftare än idag. Numera kan man använda en uppsjö färdiga template-klasser som typbestämmer instanserna så att du slipper kasta från object till din önskade typ.

Behövs det så kan man givetvis skrivna egna generiska klasser (template-klasser). Det är kanske först då som insikten om hur användbart detta egentligen är infinner sig.

Partiella typer

Tillåter dig att bygga ut befintliga klasser eller bara dela upp koden för samma klass i fler filer. Nyckelordet partial används i klassens deklaration.

Anonyma metoder

Minskar kodandet en hel del. Du slipper deklarera metoder i klassen som bara används på ett ställe som t.ex. till en delegat.

Iteratorer

En iterator hjälper dig att stega genom samlingar, t.ex. i samband med foreach. Tillsammans med IEnumerable samt yield return kan man skapa uppräkningsbara sekvenser och klasser.

Nullable types

En teknik vi nämnt i artikeln 10 Bra programmeringstekniker i C# på plats #9.

Privata set i properties

Du kan skydda set-delen eller get-delen på en property. Den kan vara private, protected eller internal.

Poängen är att du kan styra vem så får sätta property'n och samtidigt ha en property utan en massa extra privata variabler i klassen. Renare, snyggare och bättre än tidigare.

.NET 3.0/3.5

Version 3.0 kom i slutet av 2006 och 3.5 i slutet av 2007. Anledningen att dessa versioner oftas klumpas ihop är för att de båda anses höra till språket C# 3.0 men .NET-ramverket i sig uppgraderades till 3.5. En aning förvirrande.

Med .NET 3.0 kom XAML och första versionen av Expression Blend samt hörnstenar som WCF, WPF och WF. Till .NET 3.5 kom Visual Studio 2008. Vi koncentrerar oss mer på språk-nyheterna och mindre på de nya biblioteken i .NET.

Varför nämnde vi inte LINQ? Jo, LINQ är egentligen ett bibliotek av Extension methods som använder Lamda-uttryck mm. LINQ i sig är alltså inte det språktekniskt intressanta.

Slutledning av typer

Se 10 Bra programmeringstekniker i C# plats #6.

Objekt- och samlingsinitierare

Se 10 Bra programmeringstekniker i C# plats #4. Ett exempel på samlingsinitiering:

Autoimplementerade properties

Se 10 Bra programmeringstekniker i C# plats #3.

Anonyma typer

Anonyma typer kan vara ett bekvämt sätt att kapsla in skrivskyddad data i ett objekt utan att behöva definiera en klass för detta. Måste användas tillsammans med var då typen inte finns deklarerad, den är ju anonym!

Extension methods

Se artikeln Extension methods.

Query-uttryck

Med inspiration av SQL så har .NET fått ett eget sätt att ställa frågor på samlingar. Från valfri samling (IEnumerable) kan du välja ut, sortera, filtrera etc. på ett till synes SQL-liknande vis. Exempel:

Lambda-uttryck

Dessa används oftast tillsammans med LINQ för att skicka med anonyma funktioner. Ett lamda-uttryck är just en anonym funktion.

Detta område kräver mer förklaring. Kanske blir det en egen artikel snart.

Partiella metoder

Partiella metoder tillåter att implementation görs i en annan fil. Klassen som metoden hör till måste således också markeras partial.

Det finns en del regler för partiella metoder, t.ex. att de måste returnera void. Tanken är att klasser kan lämnas öppna för komplettering/utbyggnad till t.ex. andra projekt som vill använda dem. Alternativa lösningar är t.ex. att göra en override via ett arv eller att använda eventhantering.

.NET 4.0

Denna version kom i början av 2010 tillsammans med Visual Studio 2010. Ett populärt nytt bibliotek var bl.a "Parallel Extensions" som förenklade utnyttjandet av fler processorer.

Dynamisk typ

Nu introduceras en ny typ; dynamic. Med denna typ görs C# mer till ett script-språk i den mening att en dynamisk typ kan göra allt! Du kommer inte att få några kompileringsfel men däremot körfel om den används felaktigt..

Om klassen ExampleClass inte implementerar de metoder som användes så märker du det först när programmet körs då ett exception slängs.

Detta kan vara bra t.ex. då två klasser har samma metoder men delar inget gemensamt interface. Du kan alltså inte behandla dem lika fastän de båda deklarerar samma typ av metod. Med dynamic blir det hela mycket enkelare.

Namngivna och villkorliga argument

Namngivna argument till metoder hjälper till med läsbarheten i koden. Säg att du har en metod av typen (int, int), t.ex. CalculateBMI(123, 64);. Hur läser du detta anrop? Den ena parametern är vikt o den andra höjd men vilken?.

.NET 4.5

Denna version kom i slutet av 2012 tillsammans med Visual Studio 2012.

Vi erbjuder inga ytterligare förklaringar eller exempel på detta. Vi kan dock meddela att just asynkrona metoder är mycket användbara och kommer definitivt att bli ett ämne för en separat artikel.

Kommentarer

1 inlägg