Partager via


événement (référence C#)

Un événement est un membre qui permet à un objet de déclencher des notifications. Les utilisateurs d'événements peuvent attacher du code exécutable aux événements en fournissant des gestionnaires d'événements. Le mot-clé event déclare un événement. L'événement est de type délégué. Lorsqu'un objet déclenche un événement, celui-ci invoque tous les gestionnaires d'événements fournis. Les gestionnaires d'événements sont des instances de délégués ajoutées à l'événement et exécutées lorsque l'événement est déclenché. Les utilisateurs d'événements peuvent ajouter ou supprimer leurs gestionnaires d'événements sur un événement.

Exemple

L’exemple suivant montre comment déclarer et déclencher un événement qui utilise EventHandler comme type délégué sous-jacent. Pour obtenir l’exemple de code complet qui illustre aussi comment utiliser le type délégué générique EventHandler<TEventArgs> et comment s’abonner à un événement et créer une méthode de gestionnaire d’événements, consultez Guide pratique pour publier des événements conformes aux lignes directrices .NET.

public class SampleEventArgs
{
    public SampleEventArgs(string text) { Text = text; }
    public string Text { get; } // readonly
}

public class Publisher
{
    // Declare the delegate (if using non-generic pattern).
    public delegate void SampleEventHandler(object sender, SampleEventArgs e);

    // Declare the event.
    public event SampleEventHandler SampleEvent;

    // Wrap the event in a protected virtual method
    // to enable derived classes to raise the event.
    protected virtual void RaiseSampleEvent()
    {
        // Raise the event in a thread-safe manner using the ?. operator.
        SampleEvent?.Invoke(this, new SampleEventArgs("Hello"));
    }
}

Les événements constituent un type spécial de délégué de multidiffusion qui peut uniquement être appelé au sein de la classe (ou classes dérivées) ou de la structure où ils sont déclarés (la classe d’éditeur). Si d’autres classes ou structs s’abonnent à l’événement, leurs méthodes de gestionnaire d’événements sont appelées quand la classe d’éditeur déclenche l’événement. Pour plus d’informations et pour obtenir des exemples de code, consultez Événements et Délégués.

Les événements peuvent être marqués comme public, privé, protégé, interne, protégé interne ou privé protégé. Ces modificateurs d’accès définissent comment les utilisateurs de la classe peuvent accéder à l’événement. Pour plus d’informations, consultez Modificateurs d’accès.

Mots clés et événements

Les mots clés suivants s’appliquent aux événements.

Mot clé Description Informations supplémentaires
static Rend le champ accessible à tout moment aux appelants, même s’il n’existe aucune instance de la classe. Classes statiques et membres de classe statique
virtual Permet aux classes dérivées de substituer le comportement d’événement à l’aide du mot clé override. Héritage
sealed Spécifie que pour les classes dérivées l’événement n’est plus virtuel.
abstract Le compilateur ne génère pas les blocs d’accesseurs d’événement add et remove, et par conséquent les classes dérivées doivent fournir leur propre implémentation.

Un événement peut être déclaré comme événement statique à l’aide du mot clé static. Cela rend le champ accessible à tout moment aux appelants, même s’il n’existe aucune instance de la classe. Pour plus d’informations, consultez la page Classes statiques et membres de classes statiques.

Un événement peut être marqué comme événement virtuel à l’aide du mot clé virtual. Cela permet aux classes dérivées de substituer le comportement d’événement à l’aide du mot clé override. Pour plus d’informations, consultez Héritage. Un événement qui se substitue à un événement virtuel peut également être sealed, ce qui signifie que pour les classes dérivées il n’est plus virtuel. Pour finir, un événement peut être déclaré abstract, ce qui signifie que le compilateur ne génère pas les blocs d’accesseurs d’événement add et remove. Ainsi, les classes dérivées doivent fournir leur propre implémentation.

spécification du langage C#

Pour plus d'informations, voir la spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi