Visual Studio 2008 - ORCAS (Beta 2) Framework 3.5

Par Fabien Lavocat Le 28. octobre 2007 à 12:03

Introduction

Dans cet article nous allons voir les nouveautés apportées par Visual Studio 2008 - ORCAS (Beta 2) ainsi que celles du framework 3.5. Pour télécharger Visual Studio 2008 Beta 2 gratuitement, rendez-vous ici :
Visual Studio 2008 - Beta 2 : http://go.microsoft.com/?linkid=7175498

Les versions Express (qui sont gratuites, mais avec des fonctionnalités réduites) sont disponibles : http://go.microsoft.com/fwlink/?linkid=95594

Nouveautés de l'éditeur

Multi-ciblage (Multi-targeting)

Cette nouveauté Visual Studio 2008 permet, au moment de la création d'un nouveau projet de développement, de choisir la version du framework à utiliser (versions : 2.0, 3.0 et 3.5). Les versions 1.0 et 1.1 sont jugées trop vieilles par Microsoft, c'est pourquoi elles ne seront donc pas disponibles. Il sera quand même toujours possible d'avoir Visual Studio 2003 qui cohabite avec Visual Studio 2008. Il n'est donc plus indispensable de disposer d'une version spécifique de Visual Studio pour développer avec un framework en particulier.

Projet

.NET 2.0

.NET 3.0

.NET 3.5

ASP.NET Web Application

X

X

X

ASP.NET Web Service

X

X

X

Report Application X X X
Class Library X X X
Console Application X X X
CrystalReports Application X X X
WCF Service Application     X
Windows Form Application X X X
WPF Application     X
WPF Browser Application     X

Organize Usings

Autre nouveauté de ce Visual Studio, lorsque vous faites un clic droit sur le code d'une page ou d'une classe, un nouveau sous-menu fait son apparition : Organize Usings. Trois nouvelles options permettent de supprimer les { } inutiles, de les trier ou les deux.

Zoomer (Projets WPF)

Il est désormais possible de zoomer sur une zone en mode design pour un projet WPF, grâce à cet outil situé en haut à gauche de la fenétre :

Nouveautés du framework 3.5

Méthodes partielles

Une dès grande nouveautés du Framework 3.5 est l'arrivée des méthodes partielles. Depuis la version 2.0 il est possible de créer des classes partielles afin de séparer en plusieurs parties une classe dans le but de mieux architecturer le programme. Ici une méthode partielle permet de séparer la déclaration et l'implémentation d'une méthode. Voici un exemple de code de méthode partielle :

// Déclaration de la méthode partielle DoWork()
static partial void DoWork();
// Implémentation de la méthode partielle DoWork()
static partial void DoWork()
{
     for (int i = 0; i < 10; i++)
          Work(i);
}

JavaScript

Les nouveautés sur le JavaScript, pour les applications ASP.NET AJAX, sont de tailles car il est désormais possible de débugger un code JavaScript. L'IntelliSense est également présent dans ce nouveau framework.

IntelliSence JavaScript
Débugger JavaScript

Méthodes d'extension

Jusqu'au framework 2.0, il était impossible de créer des méthodes pour des classes du framework comme des String, car nous ne disposons pas du code source de ces classes. Pour cela C#3.0 nous apporte les méthodes d'extension qui permettent de créer des méthodes pour ces classes dont nous ne disposons pas du code source. Voici un exemple qui permet de créer une nouvelle méthode pour la classe String qui va inverser les caractères de la chaine.

public static String InversChars(this String s){String tmp = "";for (int i = s.Length - 1; i >= 0; i--)tmp += s[i];return tmp;}

La méthode doit etre déclarée en static dans une classe static et le mot clef this doit être présent dans la signature de la méthode afin que le compilateur comprenne qu'il s'agit bien d'une méthode d'extension. Cette nouvelle méthode qui sera ajoutée à la classe String, sera accessible par l'IntelliSense. Pour l'utiliser, vous devez procéder de la façon suivante :

String texte = "Vive le .net !";Console.WriteLine(texte.InversChars());// It shows "!ten. el eviV"

Propriétés automatiques

Autre nouveauté de ce framework 3.5, les propriétés automatiques. Dans les frameworks précédents, vous aviez des propriétés avec la portée private, ainsi que leur getters / setters respectifs avec la portée public. Voici le code d'une classe nommée Car.

public class Car{private string _CarName;private string _CarModel;private int _CarPower;public string CarName{get { return _CarName; }set { _CarName = value; }}public string CarModel{get { return _CarModel; }set { _CarModel = value; }}public int CarPower{get { return _CarPower; }set { _CarPower = value; }}}

Maintenant, il n'est plus nécessaire de créer les getters et setters de cette façon. Voici le code ci-dessous qui est vraiment beaucoup plus rapide à écrire :

public class Car{	public string CarName { get; set; }public string CarModel { get; set; }public int CarPower { get; set; }}

Initialiseurs d'objets

Avec la même classe Car que précédemment, pour initialiser les variables il était nécessaire d'utiliser le code suivant :

Car car = new Car();car.CarName = "Aston Martin";car.CarModel = "DB9";car.CarPower = 450;

Dans ce nouveau framework, il est possible d'instancier un nouvel objet comme cela :

Car car = new Car {CarName = "Aston Martin",CarModel = "DB9",CarPower = 450 };

Initialiseurs de collections

Maintenant que nous avons vu comment initialiser un objet, nous pouvons voir comment l'utiliser pour remplir une collection :

List<Car> cars = new List<Car>();cars.Add( new Car { CarName = "Aston Martin",CarModel = "DB9",CarPower = 450 };cars.Add( new Car { CarName = "Ford",CarModel = "Mustang",CarPower = 300 };cars.Add( new Car { CarName = "Dodge",CarModel = "Viper",CarPower = 510 };

Expressions Lambda

Les expressions Lambda permettent d'écrire autrement une méthode anonyme. Par exemple, partons avec une collection de Car, recherchons les voitures dont la puissance est supérieure à 350cv. Pour rappel, l'IntelliSense est présent dans la totalité de la méthode.

List<Car> cars = new List<Car>();cars.Add( new Car { CarName = "Aston Martin",CarModel = "DB9", 	CarPower = 450 };cars.Add( new Car { CarName = "Ford",CarModel = "Mustang",CarPower = 300 };cars.Add( new Car { CarName = "Dodge",CarModel = "Viper",CarPower = 510 };
List<Car> SuperCars = cars.Find(p=>p.CarPower > 350);// Donc seulement : Aston Martin DB9 et Dodge Viper

LINQ (Language Integrated Query)

La grosse nouveauté réside dans la nouvelle technologie LINQ. Cette technologie permet d'écrire avec une syntaxe très proche du SQL, des filtres de recherche dans une collection d'objets contenus dans celle-ci (LINQ to Entities), d'accéder à des bases de données SQL Server (LINQ to SQL), d'accéder à des fichiers XML (LINQ to XML). LINQ to SQL ne permet que d'accéder à des bases de données stockées sur SQL Server. La sortie du SDK (Software Development Kit) d'ADO.NET Entity Framework permettra d'accéder aux bases de données telles que ORACLE. Il sera également possible d'écrire plus facilement un provider afin de faire la liaison avec une autre base de données. Dans l'exemple suivant, nous allons voir comment utiliser LINQ to Entities. A partir d'une collection de Car, nous faisons un filtre de recherche pour avoir les voitures dont la puissance est supérieure à 350cv :

List<Car> cars = new List<Car>();cars.Add( new Car { CarName = "Aston Martin",CarModel = "DB9", 	CarPower = 450 };cars.Add( new Car { CarName = "Ford",CarModel = "Mustang", carPower = 300 };cars.Add( new Car { CarName = "Dodge",CarModel = "Viper", CarPower = 510 };

Donc voici comment, à partir d'une collection de voiture, nous pouvons faire pour effectuer un filtrage.

IEnumerable<Car> result = from c in cars 			where c.CarPower > 350orderby c.CarNameselect c;

Donc avec une syntaxe très proche du SQL, cette requête permet de récupérer toutes les voitures dont la puissance est supérieure à 350cv et de les trier par nom de la voiture.

Types anonymes

La nouveauté indispensable au bon fonctionnement de LINQ est l'utilisation des Types anonymes. En effet grâce au mot clef var, il est possible de déclarer une variable avec ce mot clef donc sans spécifier explicitement le type de cette variable. Mais la différence avec VB6 par exemple est qu'une déclaration de variable avec le mot clef var, nous donnait une variable quelconque, ici le compilateur connais le type de la variable et la type fortement. Prenons un exemple :

var i = 5;

La variable i est de type int. Il est donc possible d'effectuer toutes les méthodes disponibles sur les entiers.

var i; i = 5;// ORvar j = 5;j = "test";

Ces lignes ne peuvent pas fonctionner car pour les deux premières, il faut instancier la variable à la déclaration. Et pour les dernières, la variable j prend pour type int et ne peut donc pas recevoir comme valeur, une chaîne de caractère.

var car = new Car { CarName = "Aston Martin",CarModel = "DB9",		CarPower = 450 };Console.WriteLine(car.CarName); // Cela affiche "Aston Martin"

Dans cet exemple, le compilateur sait que la variable car est de type Car.

Conclusion

Pour conclure, nous pouvons affirmer que le C#3.5 ainsi que Visual Studio 2008 - ORCAS, apportent un gain de temps considérable pour l'écriture de code grâce aux nouvelles fonctionnalités apportées par Visual Studio ainsi qu'aux nouvelles possibilités offertes par le framework 3.5 qui sont : le débogage et l'IntelliSense présent pour les codes JavaScript, les méthodes d'extensions, les propriétés anonymes, les nouveaux initialiseurs d'objets et de collections, les expressions Lambda et que les types anonymes indispensables pour la technologie LINQ.

Tags :

Visual Studio

Commentaires

Ajouter un commentaire


(Affichera votre icône Gravatar)

  Country flag

biuquote
  • Commentaire
  • Aperçu immédiat
Loading



Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen - Updated by Fabien Lavocat

A propos de l'auteur

Fabien Lavocat Lavocat Fabien
Ingénieur Multimédia - TMM Communication

"Blog-Microsoft.fr is an independent blog and is not affiliated with, nor has it been authorized, sponsored, or otherwise approved by Microsoft Corporation."

Contactez-moi Send mail

Calendar

<<  mars 2010  >>
lumamejevesadi
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar

Publicité