.NET 3.5 og Visual Studio 2008

by DotNetNerd 15. April 2007 16:26

Vistual Studio 2008.

Jeg har kigget på den nye udgave af Visual Studio 2008 der efter planen skal udkomme engang i løber af anden halvdel af 2007. VS2008 shippes med en del features som enhver udvikler har savnet tidligere, samtidig med det er udviklet til at arbejde med den nye .NET 3.5 framework der udgives ved sammen lejlighed.

I kategorien af features som har været savnet kan jeg nævne at VS2008 giver mulighed med at arbejde med alle tidligere udgaver af frameworket tilbage til 2.0, således at man ikke skal have de "gamle" udgaver af Visual Studio installeret blot for at kunne vedligeholde et eksisterende projekt. En ekstra bonus i den sammenhæng er at man derved kan bruge de forbedrede debugging værktøjer når man f.eks arbejder med et .NET 2.0 projekt.

Udover bagudkompatibilitet er der kommet intellisence og debugging funktionalitet til JavaScript (herunder også Ajax). Det er ihvertfald en ting jeg selv har savnet i lang tid, så man kan komme væk fra at debugge via alert statements, og man slipper for at sidde og ærge sig over at man ikke kan huske hvad en member hedder. Til brug sammen med javascript er der udviklet nye xmlkommentar standarder der passer til beskrivelse af ting der er javascript specifikke.

Sidst men ikke mindst kan jeg nævne at der naturligvis også kommer en række værktøjer til at understøtte .NET 3.0 - hvor især et tool ved navn Cider til at arbejde med XAML til Windows Presentation Foundation virker interessant. Samarbejdet med andre applikationer som for eksempel Expression Studio skulle også være noget der etr tænkt meget over, så der er uden tvivl nogle interessante ting i vente der også.

.NET 3.5 - whats new?!.

Det helt store samtale emne omkring .NET 3.5 har været LINQ som står for Language Integrated Query. Idéen med LINQ er at gøre det lettere at arbejde med data - noget som vores egen Anders Hejlsberg har været en af de store bagmænd til. Udover og i forbindelse med udviklingen af LINQ kommer der også en række udvidelser til både C# og VB som nu udkommer i versionerne C# 3.0 og VB 9.

Både C# og VB udvides med extention methods samt object- og collection initializers. Begge sprog får også nogle sprogspecifikke udvidelser, som for C# inkluderer automatic properties og mulighed for implicit typespecifik deklarering.

C# 3.0 og VB 9 udvidelser.

Som sagt udvides begge sprog med det der kaldes extention methods, object- og collection initializers.

Extention methods er en måde hvorpå man kan tilføje metoder til en type, som bedst er illustreret med et lille eksempel. Hvis du idag skal checke om en streng validerer som en gyldig email vil du typisk lave en metode på en anden klasse der kan lave valideringen. Med extention methods kan du istedet føje metoden til string således at du kan skrive:

if (txtEmail.IsValidEmail)
{
   
}

Det eneste det kræver er at du definerer en statisk klasse, med din metode der tager typen der skal udvides som parameter og bruger keywordet "this" foran.

public static class MyExtensions
{
    public static bool IsValidEmail(this string s)
    {
        Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
        return regex.IsMatch(s);
    }
}


Når der er gjort kan du blot importere klassen ved hjælp af en using statement og så er metoden tilgængelig på typen string.

using MyExtentions;

Object initializers er en mere elegant måde at initialisere et objekt på, således at instantiering og tildeling af værdier til properties gøres mere kompakt. Igen er det nok bedst illustreret ved et kort eksempel

Customer customer = new Customer { Name = "Allan", City = "Nyborg" };

På samme vis giver collection initializers mulighed for at skabe collections og fylde dem på en mere kompakt måde.

List<Customer> customers = new List<Customer>()
{
    new Customer{Name = "Allan", City = "Nyborg"},
    new Customer{Name = "Lena", City = "Hundslev"}
};


Sprogspecifikke udvidelser.

Som tidligere nævnt er der også kommet nogle sprogspecifikke udvidelser til både C# og VB. Til C# er der tale om automatic properties og så et nyt keyword "var".

Automatic properties går at man kan deklarere properties uden at skulle have en underliggende private member til at holde værdien. Naturligvis skal der stadig være noget til at holde værdien, men dette er nu håndterert af compileren så det er muligt at deklarere en property blot ved at skrive:

public string Name
{
    get;
    set;
}


Var keywordet er en udvidelse der grunder i at LINQ syntaksen skal have mulighed for at man implicit kan lave en variabel der alligevel har den rigtige type og ikke blot er af typen object.

var customer = new Customer { Name = "Allan", City = "Nyborg" };

Kort fortalt vil det sige at ovenstående "customer" handle har fat i et objekt af typen Customer, de typen udledes automatisk.

VB får den samme mulighed, men dog uden et nyt keyword da sproget allerede idag har keywordet Dim - objekter bliver frem over bare instantieret med den rigtige tyåe frem for som object selvom man ikke skriver "As Customer".

En anden smart feature der kommer til VB er muligheden for at arbejde med XML inline i koden, således at man kan skrive:

XElement element = <customer>
                                  <name>Christian</name>
                                  <city>Odense</city>
                              </customer>

LINQ - en ny måde at arbejde med data.

Det absolut mest omtalte emne i forbindelse med .NET 3.5 har været LINQ. Da dette er et større emne gemmer jeg det til en seperat artikel, men jeg kan dog lige nævne kort at LINQ er en ny måde at arbejde med data på hvad enten det skal hentes fra en database, et xml dokument eller fra nogle objekter i memory.

Idéen er at lave en fælles syntaks til at definere funktioner der kan bearbejde data på en måde der i nogen grad minder om SQL. Derved slipper man for at skulle arbejde på en forskellig måde alt efter om man arbejder med en sql, xml eller hvad det nu kan være, og samtidig arbejder man med typestærke og extensible objekter - frem for querys der er definerede som strenge.

Tags: , , ,

Who am I?

My name is Christian Holm Diget, and I work as an independent consultant, in Denmark, where I write code, give advice on architecture and help with training. On the side I get to do a bit of speaking and help with miscellaneous community events.

Some of my primary focus areas are code quality, programming languages and using new technologies to provide value.

Microsoft Certified Professional Developer

Microsoft Most Valuable Professional

Month List