Recommandé, 2022

Choix De L'Éditeur

Différence entre les délégués et les événements en C #

l’utilisation des délégués et des événements joue un rôle important dans le programme axé sur les événements. Les délégués peuvent faire référence à une méthode, qui est assez similaire au pointeur de fonction en C ++. Les événements indiquent qu'une action a été effectuée. La différence fondamentale entre les délégués et les événements est que les délégués détiennent la référence des méthodes et que l'événement fournit un moyen d'accéder à cette méthode à l'aide de délégués.

Tableau de comparaison

Base de comparaisonLes déléguésÉvénements
De baseUn délégué détient la référence d'une méthode.L'événement est une abstraction superposée fournie aux délégués.
Syntaxedelegate return_type delegate_name (liste de paramètres);event event_delegate event_name;
Mot-cléUn délégué est déclaré à l'aide du mot clé "delegate".Un événement est déclaré à l'aide d'un mot clé "événement".
DéclarationUn délégué est déclaré en dehors de toute classe.Un événement est déclaré dans une classe.
InvoquerPour invoquer une méthode, elle doit être référée au délégué.Pour invoquer une méthode, elle doit être affectée à l'événement.
Covariance et ContravarianceIls offrent une flexibilité aux délégués.Aucun tel concept.
Accesseur d'événementAucun tel concept.Gère la liste des gestionnaires d'événements.
DépendanceLes délégués sont indépendants des événements.L'événement ne peut pas être créé sans délégués.

Définition de délégués

En C #, les délégués sont utilisés en tant que pointeur de fonction pour faire référence à une méthode. C'est spécifiquement un objet qui fait référence à une méthode qui lui est assignée. Le même délégué peut être utilisé pour désigner différentes méthodes, car il est capable de contenir la référence de différentes méthodes, mais une à la fois. La méthode qui sera invoquée par le délégué est déterminée lors de l'exécution. La syntaxe de déclaration d'un délégué est la suivante:

 delegate return_type delegate_name (liste de paramètres); 

Ici, return_type déclare le type de la valeur renvoyée par la méthode, appelée par delegate et nom_repertoire est le nom du délégué. Liste_paramètres définit la liste des paramètres requis par les méthodes qui seront appelées par le délégué.

Il convient de rappeler quelques points importants concernant les délégués. Il peut appeler n'importe quelle méthode correspondant à sa signature et au type de retour. Un délégué peut appeler une méthode d'instance ou une méthode statique. S'il appelle une méthode d'instance, il doit recourir à object pour l'appeler. Les délégués prennent en charge la multidiffusion, c’est-à-dire que vous pouvez chaîner les méthodes qui seront automatiquement appelées lorsque le délégué qui les fait référence est appelé. Vous devez simplement créer un objet délégué et affecter les méthodes les unes après les autres à la chaîne à l'aide de l'opérateur "+ =". Vous pouvez également dé-chaîner une méthode à l'aide de l'opérateur “- =”.

Les caractéristiques qui ajoutent une flexibilité supplémentaire au délégué sont la covariance et la contravariance. Covariance et Contravariance permettent la condition où le type de retour et la signature de la méthode affectée à délégué sont différents de ceux du délégué.

  • La covariance vous permet d'affecter une méthode au délégué lorsque le type de résultat de cette méthode est une classe dérivée de la classe spécifiant le type de retour du délégué.
  • Contravariance vous permet d'affecter une méthode au délégué, où le type de paramètre de la méthode est une classe de base de la classe spécifiée comme paramètre du délégué.

Définition des événements

Les événements sont l'action effectuée qui modifie l'état d'un objet. Les événements sont déclarés à l'aide de délégués. Sans la présence de délégués, vous ne pouvez pas déclarer d'événements. Vous pouvez dire qu'un événement fournit une encapsulation aux délégués. Il existe deux composés importants lorsqu’il s’agit d’événements et d’événements et de gestionnaires d’événements. Si les objets sont intéressés par l'événement, il enregistre un gestionnaire d'événements pour cet événement particulier. Et chaque fois que les événements sont déclenchés, les gestionnaires d’événements enregistrés sont appelés. La déclaration de l'événement est la suivante:

 event event_delegate event_name; 

Ici, «événement» est un mot clé qui indique la déclaration d'un événement. Ensuite, event_delegate affiche le nom du délégué qui prend en charge l'événement. Ensuite, nom_événement est le nom de l'événement.

Il y a quelques points importants à retenir lors du traitement des événements. Comme les délégués, les événements peuvent aussi être multicast. En d'autres termes, plusieurs objets chaînés (enregistrés) sous un gestionnaire d'événements répondent lors de la levée d'un événement. Les gestionnaires d'événements peuvent être ajoutés à la chaîne à l'aide de l'opérateur "+ =" et peuvent être déconnectés à l'aide de l'opérateur "- =". Les méthodes statique et instance peuvent être utilisées en tant que gestionnaire d'événements. L'accesseur d'événement peut vous donner le contrôle de la mise en œuvre de la liste de gestionnaires d'événements.

L'interface peut contenir des événements. Les événements peuvent également être abstraits alors que les événements basés sur des accesseurs ne peuvent pas être abstraits. L'événement peut être virtuel et être remplacé par une classe dérivée.

Principales différences entre les délégués et les événements en C #

  1. Delegate est un objet utilisé comme pointeur de fonction pour contenir la référence d'une méthode. D'autre part, les événements fournissent une abstraction aux délégués.
  2. Un mot clé requis pour déclarer un délégué est un délégué, tandis qu'un mot clé requis pour déclarer un événement est événement .
  3. Un délégué est déclaré en dehors d'une classe alors qu'un événement est déclaré dans une classe.
  4. Pour invoquer une méthode à l'aide d'un objet délégué, celle-ci doit être référée à l'objet délégué. D'autre part, pour invoquer une méthode à l'aide d'un objet événement, la méthode doit être référée à l'objet événement.
  5. Covariance et Contravariance offrent une flexibilité supplémentaire aux objets délégués. D'autre part, l'événement n'a pas de tels concepts.
  6. Event Accessor gère la liste des gestionnaires d'événements alors que délégué n'a pas ce concept.
  7. Les délégués sont indépendants des événements, mais ils ne peuvent pas être créés sans délégué.

Conclusion:

Les délégués sont utiles car ils prennent en charge les événements et permettent d’exécuter la méthode au moment de l’exécution. L'accesseur d'événement nous permet de synchroniser les gestionnaires d'événements dans des applications multithreads.

Top