Abonnement et désabonnement
Contexte : Les abonnés ajoutent leurs gestionnaires d’événements avec += et les retirent avec -=. Cela évite les fuites de mémoire lorsque l’abonné survit à l’éditeur.
Abonnement
Section intitulée « Abonnement »Button button = new Button();button.Clicked += OnButtonClicked; // abonnement
private void OnButtonClicked(object sender, EventArgs e){ Console.WriteLine("Bouton cliqué");}Désabonnement
Section intitulée « Désabonnement »button.Clicked -= OnButtonClicked; // désabonnementUtilisation d’expressions lambda
Section intitulée « Utilisation d’expressions lambda »button.Clicked += (sender, e) => Console.WriteLine("Cliqué");// Se désabonner d’une lambda est délicat ; stockez le délégué dans une variable.EventHandler handler = (s, e) => Console.WriteLine("Cliqué");button.Clicked += handler;button.Clicked -= handler;Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Pattern Dispose : Dans les applications de longue durée, désabonnez‑vous toujours des événements dans la méthode Dispose pour éviter les fuites de mémoire.
Exemple : Dans WinForms, les contrôles se désabonnent des événements lorsqu’ils sont supprimés.