Nous utilisons souvent un gestionnaire d'événements en C #, comme ci-dessous:
some_event+=some_event_handler;
4 Réponses :
Si vous devez les suivre peut-être que vous avez besoin de manutention manuelle des événements avec les mots-clés Et oui, j'ai oublié, les événements sont enregistrés au moment de l'exécution p> Ajouter code> et
supprimer code>.
Jetez un coup d'œil à cette http://msdn.microsoft. com / fr-nous / bibliothèque / 8627Sbea (vs.71) .aspx (de l'exemple 2 sur) p>
Merci Astorcas, je vais jeter un coup d'œil à cela.
L'abonnement se produit au moment de l'exécution. Il peut être à l'intérieur conditionnel. P>
Merci Pavel. J'ai juste besoin de la preuve. ;)
Une preuve, comme une preuve mathématique? :) Si cela se produirait au moment de la compilation, vous ne seriez pas en mesure de souscrire de manière conditionnelle lorsque le fait de si l'abonnement est demandé n'est pas connu à l'heure de la compilation. Quoi qu'il en soit, regardez MSIL.
Nous pouvons dire que cela concerne les délégués Concernant l'instance et la méthode statique cible juste une note de C # en nutShell p>
Lorsqu'un objet de délégué est attribué à une méthode d'instance, l'objet délégué doit
maintenir une référence non seulement à la méthode, mais aussi à l'instance à laquelle la
la méthode appartient. La propriété cible du système.Delegate représente cette instance
(et sera null pour un délégué faisant référence à une méthode statique). P>
blockQuote> code>. Un délégué code> La variable code> est attribué une méthode de manière dynamique. Cela nous donne la possibilité d'écrire des méthodes de plug-in. P>
Le code n'est qu'une instruction, similaire à un appel de méthode, et se produit donc dans le flux d'exécution naturel au point que vous avez placé, que ce soit à l'intérieur d'une boucle, de la déclaration IF ou similaire.
comme tel, avant La déclaration a été exécutée, l'événement n'a pas été attribué au gestionnaire d'événements. Peu importe (dans ce contexte) si l'événement est un événement statique ou instance. P>
Vous pouvez déterminer comment le code se comporte en comparant celui-ci à ce code: P>
some_event = Delegate.Combine(some_event, some_event_handler);
Une petite note: "Certain_event" contient une liste Liste i> d'adresses d'entrée, il est possible que plusieurs manutentions sont souscrives au même événement.
Merci Hans, pour le rappel.