Sommaire

La solution C# : delegate et event event

En langage C, la communication entre modules, comme par exemple entre exécutables et DLL, se fait par l’intermédiaire d’un pointeur de fonction.

Le pointeur de fonction n’est autre qu’un emplacement mémoire contenant l’adresse de la fonction à exécuter. Le système d’exploitation permet au programme de charger une DLL puis de récupérer dynamiquement les adresses des fonctions qu’elles exportent à partir de leur nom ou d’index. Ensuite, grâce à une syntaxe adéquate, le programme appelle la fonction comme si elle était "locale".

Problème de cette solution : un pointeur de fonction ne renseigne ni le nombre ni le type des paramètres ni la valeur retour... un pointeur de fonction, c’est juste quatre octets et c’est aussi l’origine de bien des dysfonctionnements !

Dans le monde du C#, le développeur dispose d’un type spécial appelé delegate qui va supprimer ce défaut majeur du C tout en allant beaucoup plus loin. delegate

Un delegate est un objet :

  • définissant un prototype de méthode de type static ou instancié avec ses paramètres et son type de retour.

  • contenant une collection de références à des méthodes compatibles à son prototype.

  • pouvant être passé en paramètre à une autre méthode.

Syntaxe d’un delegate

visibilité ...