[PDC 2008] C# 4.0 - Paramètres optionnels et nommés

by Fabien Lavocat 5. November 2008 02:26

vs10

Paul Vick (Technical Lead de Visual Basic .NET) et Anders Hejlsberg (Technical Fellow in the Developer Division – Chef designer de C#) l’ont annoncé, Visual Basic et C# vont évoluer ensemble, ce qui signifie que toute nouveauté apportée à un langage sera présente dans l’autre. Cette annonce se justifiera dès Visual Basic 10 et C# 4.0.

Après une telle introduction, je ne peux que vous montrer une nouveauté de C# 4.0 qui est présente dans VB depuis longtemps : les paramètres optionnels.

Voilà comment, en VB.NET, écrire une méthode avec des paramètres optionnels. En utilisant le mot clé Optional.

image

En C# il fallait écrire une méthode, puis faire un nombre de surcharge conséquent :

clip_image004

Mais il n’était pas possible de passer uniquement les paramètres path et bufferSize sans avoir de paramètres encoding et detectEncoding sans avoir a réécrire des surcharges de méthodes…

Nouveauté C# 4.0 : Il est désormais possible d’utiliser les paramètres optionnels en spécifiant simplement les valeurs qui prennent les variables en cas de non affectation de celle-ci lors de l’appel de la méthode.

clip_image006

Passons maintenant à l’appel d’une méthode avec des paramètres optionnels :

clip_image008

Maintenant, je souhaite appeler la même méthode avec les paramètres bufferSize et path, je vais donc devoir utiliser le nommage des paramètres. En effet, il n’est plus obligatoire de respecter l’ordre des paramètres défini dans l’écriture de la méthode.

clip_image010

Pour résumer :

· Pour créer un paramètre nommé, il suffit d’ajouter la valeur par défaut du paramètre dans la signature de la méthode.

· Lors de l’appel de la méthode, il n’est pas obligatoire de donner les paramètres dans l’ordre mais il faut utiliser le nommage des paramètres : « NomParametre: »

· Utiliser des paramètres optionnels permet d’éviter d’utiliser des surcharges de méthodes inutiles.

Tags: ,

Comments

11/5/2008 9:47:06 AM #

Achain Jérémy

Déjà le C# 3.0 simplifié beaucoup le code, et permettait d'optimiser le nombre de ligne.
c'est cool de savoir que le C#4.0 poursuit dans cette direction ^^, permettant d'éviter de passer forcement par la surcharge.

Achain Jérémy France

11/5/2008 10:19:46 AM #

Fabien Lavocat

Effectivement, le rôle de Microsoft dans le développement d'outils de développement (Visual Studio) ou de language de développement (VB / C#) est de facilité le travail des développeurs mais maintenant également des testeurs...

Fabien Lavocat France

11/5/2008 4:44:27 PM #

beedoo

C'est vraiment juste énorme ! Je viens de faire le teste avec la CTP de VS2010 :]

J'ai regardé ce qui était généré avec Reflector et je ne m'attendais pas du tout à voir un attribut !

Voilà mon code :

public static void WriteOnConsole(String text, String receiver = "Beedoo")
{
    Console.WriteLine("{0}, you've got a message :\r\n",receiver);
    Console.WriteLine(text);
}

Et voilà ce que Reflector révèle :

public static void WriteOnConsole(string text, [Optional, DefaultParameterValue("Beedoo")] string receiver)
{
    Console.WriteLine("{0}, you've got a message :\r\n", receiver);
    Console.WriteLine(text);
}

Pour l'appel, le compilateur à généré le code que je pensais, c'est à dire une variable contenant la valeur du paramètre nommé, puis l'appel de la méthode avec cette variable et le paramètre optionnel.

Mon appel de la méthode :

WriteOnConsole(text: "Hello PDC!");

Le même dans Reflector :

string CS$0$0000 = "Hello PDC!";
WriteOnConsole(CS$0$0000, "Beedoo");

Vraiment super sympa !

Bon ben sur ce, tu m'as donné envie de regarder la session sur le futur de C# par Anders Hejlsberg :]

A+ ;)

beedoo France

11/6/2008 4:37:04 AM #

Fabien Lavocat

J'écris un article avec le lien vers toutes les vidéos...
Avec peut être (si j'y arrive) une animation Silverlight !

Fabien Lavocat France

11/9/2008 9:42:24 AM #

Hervé

Pour ma part, je commence à trouver ça un peu compliqué... SI vous voulez mon avis, Microsoft ajoute le maximum de fonctionnalités potentiellement "à la mode" aux languages .NET, et principalement C# et VB. Le code va devenir de plus en plus difficile à lire (il l'est déjà pour moi suffisamment comme ça). C'est comme le nouveau mot clé dynamic... Sans commentaires...

Hervé France

11/10/2008 2:37:33 AM #

Fabien Lavocat

Bonjour Hervé,
Je comprend que lorsque l'on ne connais pas bien ces nouvelles techniques d'écriture rapide du code, cela puisse parraître dur. Mais lorsque l'on commencera à voir du code, de la documentation, et des articles sur ces nouvelles fonctionnalités, vous verrez que ce sera vraiment simple. Cela parrait toujours complexe à première vue.
Je ne tarderais pas à écrire un article sur le nouveau mot clé dynamic.
En attendant regardez la vidéo : http://channel9.msdn.com/pdc2008/TL16/

Fabien Lavocat France

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading



About

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

MVP
Microsoft Most Valuable Professional
Client Application Development