Partager via


Mot event clé (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.

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, consultez Comment publier des événements conformes aux instructions .NET. Cet exemple illustre le type de délégué générique EventHandler<TEventArgs> , comment s’abonner à un événement et créer une méthode de gestionnaire d’événements,

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 sont des délégués multidiffusion qui ne peuvent être appelés qu’à partir de la classe (ou des classes dérivées) ou de struct où ils sont déclarés (classe publisher). Si d’autres classes ou structs s’abonnent à l’événement, leurs méthodes de gestionnaire d’événements sont appelées lorsque la classe publisher 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, , privateprotected, internal, protected internalou private protected. 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.

À compter de C# 14, les événements peuvent être partial. Les événements partiels ont une déclaration de définition et une déclaration d’implémentation. La déclaration de définition doit utiliser la syntaxe de type champ. La déclaration d’implémentation doit déclarer les gestionnaires add et remove.

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, il n’est plus virtuel.
abstract Le compilateur ne génère pas les add blocs d’accesseur d’événements et remove , par conséquent, les classes dérivées doivent fournir leur propre implémentation.

Un événement peut être déclaré en tant qu’événement statique à l’aide du mot clé statique . Les événements statiques sont disponibles pour les appelants à tout moment, même si aucune instance de la classe n’existe. Pour plus d’informations, consultez la page Classes statiques et membres de classes statiques.

Un événement peut être marqué comme un événement virtuel à l’aide du virtual mot clé. Les classes dérivées peuvent remplacer le comportement de l’événement à l’aide du override mot clé. Pour plus d’informations, consultez Héritage. Un événement substituant un événement virtuel peut également être sealed, qui spécifie que pour les classes dérivées, il n’est plus virtuel. Enfin, un événement peut être déclaré abstract, ce qui signifie que le compilateur ne génère pas les add blocs d’accesseur et remove d’événement. 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