Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Nouveautés VB 2008 [VB 9.0] : Conversion simplifiée des délégués - Délégués non stricts - Relaxed Delegates

Attaquons maintenant une des nouveautés du langage Visual Basic 2005 [VB 9.0] qu'est la "Conversion simplifiée des délégués", aussi appelé "Délégués non stricts" ou si vous préférez en version US "Relaxed Delegates"

  • Qu'est-ce que la Conversion simplifiée des délégués (Délégués non stricts)

La conversion simplifiée des délégués permet d'assigner des méthodes (subs, fonctions) aux délégués ou aux gestionnaires lorsque les signatures (paramètres) ne sont pas identiques.

  • Exemples de Relaxed Delegates

Afin de comprendre rapidement la notion de Relaxed Delegates (conversion simplifiée des délégués).  Prenons l'exemple de l'exploitation d'un évènement "Click" sur un objet de type button.

EN VB 8.0 (.NET 2.0) - VS 2005, vous obteniez le code suivant :

Private Sub Button1_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click

End Sub

Vous remarquez ici la signature de votre méthode qui contient un objet (sender) ainsi qu'un EventArgs (e).  Cette syntaxe constitue bien un Handler valide.

L'écriture suivante engendre par contre une erreur, malgré que nous soyons sur un sous-type de l'EventArgs (précison bien que nous sommes toujours en VB 8.0) :

image

Il en serait de même pour tout délégué dont l'exploitation passerait par une méthode de signature différente... exemple un type Object dans la définition du délégué et un type Integer dans la méthode l'exploitant.

Observez maintenant l'équivalent en VB 9.0 (.NET 2.0) - VS 2008

image

L'écriture telle que recherchée et refusée en VB 8.0 engendre bien dans ce cas-ci en VB 9.0 une validation du compilateur Visual Basic.

Note : mon projet a pourtant bien pour target le .NET Framework 2.0 (cfr explications de mon post sur le multi-targetting)

Observons même l'assembly obtenue au travers de Reflector :

image 

Surprenant non ?  Et encore, nous ne sommes pas encore au bout de nos surprises, pour cause, observez, vous pourrez en arriver à l'écriture suivante :

image

Comme dirait "Garcimore" ... Dichparou :p ... Effectivement, vous pourrez ainsi en arriver au point de faire disparaître complètement la signature de votre méthode !

image

Bien entendue, il en va de même avec vos propres délégués.  Attention toutefois, les délégués simplifiés vous permettent d'omettre les arguments que dans le cas de déclarations qui ne comprennent aucune ambiguïté.

Cette nouveauté vous permettra, vous l'aurez compris, d'associer par exemple à une même méthode deux Handlers dont les signatures sont différentes :

image

Voici quelques liens si vous souhaitez poursuivre le sujet :

Bon code

R.
Member of WygTeam
www.wygwam.com

Publié jeudi 31 janvier 2008 06:54 par redo
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

# re: Nouveautés VB 2008 [VB 9.0] : Conversion simplifiée des délégués - Délégués non stricts - Relaxed Delegates

J'adore ca ! Wink

Sous VS2008, je faisais Public Sub X_Click(Optional Byval sender as Object = Nothing, Optional Byval e as EventArgs = Nothing) Handles X.Click

... et cela passe !

Donc pour ceux qui comme moi n'ont pas la chance d'avoir VS2008, ben ca peut toujours servir, même si c'est plus limité...

jeudi 31 janvier 2008 18:57 by FREMYCOMPANY
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Perso] Découvertes estivales : Linux (Part I) par Le blog de FremyCompany le il y a 1 heure et 52 minutes

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 16 heures et 28 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 17 heures et 42 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le 07-03-2009, 09:56

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le 07-03-2009, 09:00

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 07-03-2009, 08:45

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53