Un délégué est un type de référence pointant vers une méthode et est utilisé pour réaliser un couplage lâche, tandis qu'un événement est un délégué spécial utilisé pour la gestion des événements. La délégation transfère la responsabilité des méthodes d'appel au destinataire, améliorant ainsi la réutilisabilité du code. Les événements permettent aux objets d'informer les abonnés de l'occurrence d'événements, et les abonnés peuvent répondre aux événements. Pour utiliser un délégué, vous devez définir un type de délégué avec la même signature que la méthode appelée, créer un objet délégué pointant vers la méthode et le transmettre en paramètre. Pour utiliser un événement, vous devez définir un événement à l'aide d'un type délégué dans la classe. Les abonnés s'abonnent et se désabonnent en ajoutant et en supprimant des méthodes. Lorsque l'événement est déclenché, tous les abonnés seront appelés.
Le rôle des délégués et des événements en C#
Les délégués et les événements sont des mécanismes couramment utilisés en C# pour obtenir un couplage lâche entre les codes et la gestion des événements.
Delegate
Événement
La relation entre la délégation et les événements
Le délégué est le mécanisme sous-jacent des événements. Les événements utilisent des délégués pour gérer une liste d'abonnés et déclencher des appels de méthode à tous les abonnés lorsque l'événement se produit.
Utilisation de délégués
Pour utiliser des délégués, vous devez suivre ces étapes :
Utiliser des événements
Pour utiliser des événements, vous devez suivre ces étapes :
Exemple
Voici un exemple simple utilisant des délégués et des événements :
<code class="csharp">// 定义一个委托 public delegate void MyEventHandler(object sender, EventArgs e); // 定义一个事件 public event MyEventHandler MyEvent; // 触发事件 protected virtual void OnMyEvent(EventArgs e) { MyEvent?.Invoke(this, e); }</code>
<code class="csharp">// 订阅事件 myClass.MyEvent += MyEventHandler;</code>
<code class="csharp">// 触发事件 myClass.OnMyEvent(new EventArgs());</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!