Mot‑clé event
Contexte : Le mot‑clé event restreint l’utilisation d’un champ délégué. Seule la classe déclarante peut invoquer l’événement ; le code externe ne peut qu’ajouter ou supprimer des gestionnaires.
Déclaration
Section intitulée « Déclaration »public class Publisher{ public event EventHandler SomethingHappened;}Dans les coulisses
Section intitulée « Dans les coulisses »Le compilateur crée un champ délégué privé et ajoute des accesseurs add et remove.
// Équivalent approximatifprivate EventHandler _somethingHappened;public event EventHandler SomethingHappened{ add { _somethingHappened += value; } remove { _somethingHappened -= value; }}Accesseurs d’événement personnalisés
Section intitulée « Accesseurs d’événement personnalisés »Vous pouvez fournir votre propre logique add/remove.
private EventHandler _handlers;public event EventHandler MyEvent{ add { _handlers += value; Console.WriteLine("Ajouté"); } remove { _handlers -= value; Console.WriteLine("Supprimé"); }}Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Notification de changement de propriété : Dans les frameworks MVVM, l’événement PropertyChanged est déclaré avec event, permettant à la vue de s’abonner.
Exemple : INotifyPropertyChanged utilise un événement PropertyChanged.