C# 3.0
Jeg har altid været en stor fan af scriptsprog, da man i de enkelte funktioner kan udtrykke sig meget kort og koncist. Navnlig i de nyere scriptsprog som Python og Ruby, ældre scriptsprog som vbscript og php er lidt af en pestilens syntaktisk set. Imidlertid foretrækker jeg så langt at kode i C# når der skal laves større opgaver: Stærke typer og kodegenkendelse gør tilværelsen meget nemmere i store projekter. Prisen man må betale for dette er en hel del repetitivt kodearbejde da alt skal erklæres! En linie i C# 2.0 som
Dictionary<string, List<int>> dic
= new Dictionary<string, List<int>>();
simpelthen oser af repetition
I C# 3.0 kan man skrive ( Jeg har prøvet det i maj CTP udgaven af af C# 3.0)
var dic
= new Dictionary<string, List<int>>();
Kompileren er nu blevet intelligent! Den indser at dic er en variabel af typen
Dictionary<string, List<int>>
(og vi får selvfølgelig kodegenkendelse i Visual Studio). Vi har ikke opgivet de stærke typer: Hvis man efterfølgende siger dic = 2; får man en kompilerings fejl.
Anonyme metoder
I C#2.0 blev jeg begejstret for anonyme metoder og generics
int [] numbers = new int[] { 1, 4, 2, 7, 8, 9,19 };
int [] test
= Array.FindAll (numbers,delegate(int n){return (n % 2) != 0;});
for(int i=0;i<test.Count();i++){Console.WriteLine(test[i]);}
Tre linier kode der finder alle tal i et array som er ikke delelige med 2. Et kæmpeskridt i forhold til .NET 1.0, men formuleret i C# 3.0 kan dette nu formuleres mere elegant:
var numbers = new int[] { 1, 4, 2, 7, 8, 9 };
var test = Array.FindAll (numbers,n =>(n % 2) != 0);
for(var i=0;i<test.Count();i++){Console.WriteLine(test[i]);}
En ny og meget renere syntaks for anonyme methoder, hvor man takket være den smarte kompiler slipper for at erklære variablene explicit. Det bedste er at vi ikke behøver en ny version af .NET. Version 2.0 kan sagten håndtere ovenstående.
Man kan synes at udvidelsen af C# med disse muligheder ikke er strengt nødvendige. Ovenstående øvelser tjener da også primært et formål – nemlig at bane vejen for LINQ : .NET Language Integrated Query som jeg vil komme tilbage til i en anden blogpost. Personligt er jeg glad for de genveje der her tilbydes: Den vigtigste kode er den man IKKE skriver som det formuleres i The Pragmatic Programmer
Se mere om C# 3.0 på http://msdn.microsoft.com/vcsharp/future/
Af:
Henrik Farnø
Kategorier: Teknologi
