Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les délégués fournissent un mécanisme de liaison tardive dans .NET. La liaison tardive signifie que vous créez un algorithme où l’appelant fournit également au moins une méthode qui implémente une partie de l’algorithme.
Par exemple, envisagez de trier une liste d’étoiles dans une application d’astronomie. Vous pouvez choisir de trier ces étoiles par leur distance de la terre, ou l’ampleur de l’étoile, ou leur luminosité perçue.
Dans tous ces cas, la méthode Sort() fait essentiellement la même chose : organise les éléments de la liste en fonction d’une comparaison. Le code qui compare deux étoiles est différent pour chacun des classements de tri.
Ces types de solutions ont été utilisés dans les logiciels depuis un demi-siècle. Le concept de délégué du langage C# fournit une prise en charge linguistique de première classe et la sécurité de type autour du concept.
Comme vous le verrez plus loin dans cette série, le code C# que vous écrivez pour les algorithmes comme celui-ci est de type sécurisé. Le compilateur garantit que les types correspondent aux arguments et aux types de retour.
Les pointeurs de fonction prennent en charge des scénarios similaires, dans lesquels vous avez besoin de plus de contrôle sur la convention d'appel. Le code associé à un délégué est appelé à l’aide d’une méthode virtuelle ajoutée à un type délégué. À l’aide de pointeurs de fonction, vous pouvez spécifier différentes conventions.
Objectifs de conception de langage pour les délégués
Les concepteurs de langage ont énuméré plusieurs objectifs pour la fonctionnalité qui a finalement été déléguée.
L’équipe voulait une construction de langage commune qui pouvait être utilisée pour tous les algorithmes de liaison tardive. Les délégués permettent aux développeurs d’apprendre un concept et d’utiliser ce même concept dans de nombreux problèmes logiciels différents.
Ensuite, l’équipe souhaitait prendre en charge les appels de méthodes uniques et multicasts (Les délégués multidiffusion sont des délégués qui chaînent plusieurs appels de méthode. Vous verrez des exemples plus loin dans cette série.)
L’équipe voulait que les délégués prennent en charge la même sécurité de type que les développeurs attendent de toutes les constructions C#.
En conclusion, l'équipe a reconnu qu'un schéma d'événement est un modèle spécifique où les délégués, ou tout algorithme de liaison tardive, peuvent être utiles. L’équipe souhaitait s’assurer que le code des délégués pouvait fournir la base du modèle d’événement .NET.
Le résultat de tout ce travail était la prise en charge des délégués et des événements en C# et .NET.
Les autres articles de cette série couvrent les fonctionnalités linguistiques, la prise en charge des bibliothèques et les idiomes courants utilisés lorsque vous travaillez avec des délégués et des événements. Vous en apprendrez davantage sur :
- Le mot clé
delegate
et le code qu'il génère. - Les fonctionnalités dans la classe
System.Delegate
, et la façon dont ces fonctionnalités sont utilisées. - Comment créer des délégués de type sécurisé.
- Comment créer des méthodes qui peuvent être appelées par le biais de délégués.
- Comment utiliser des délégués et des événements à l’aide d’expressions lambda.
- Comment les délégués deviennent l’un des blocs de construction de LINQ.
- La façon dont les délégués sont la base du modèle d’événement .NET et la façon dont ils sont différents.
Commençons.