Condividi tramite


Parola event chiave (riferimenti per C#)

Un evento è un membro che consente a un oggetto di attivare notifiche. Gli utenti possono allegare codice eseguibile per gli eventi fornendo gestori eventi. La parola chiave event dichiara un evento. L'evento è di tipo delegato. Mentre un oggetto attiva un evento, l'evento richiama tutti i gestori eventi forniti. I gestori eventi sono istanze delegate aggiunte all'evento ed eseguite quando l'evento viene generato. Gli utenti possono aggiungere o rimuovere i relativi gestori eventi in un evento.

Il riferimento al linguaggio C# documenta la versione rilasciata più di recente del linguaggio C#. Contiene anche la documentazione iniziale per le funzionalità nelle versioni di anteprima pubblica per la prossima versione del linguaggio di programmazione.

La documentazione identifica tutte le funzionalità introdotte nelle ultime tre versioni della lingua o nelle anteprime pubbliche correnti.

Suggerimento

Per trovare quando una funzionalità è stata introdotta per la prima volta in C#, vedere l'articolo sulla cronologia delle versioni del linguaggio C#.

L'esempio seguente illustra come dichiarare e generare un evento che usa EventHandler come tipo di delegato sottostante. Per l'esempio di codice completo, vedere Come pubblicare eventi conformi alle linee guida .NET. Questo esempio illustra il tipo di delegato generico EventHandler<TEventArgs> , come sottoscrivere un evento e creare un metodo del gestore eventi.

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"));
    }
}

Gli eventi sono delegati multicast che è possibile richiamare solo dall'interno della classe (o classi derivate) o dallo struct in cui vengono dichiarati (la classe publisher). Se altre classi o struct sottoscrivono l'evento, i relativi metodi del gestore eventi vengono chiamati quando la classe publisher genera l'evento. Per altre informazioni e altri esempi di codice, vedere Eventi e Delegati.

È possibile contrassegnare gli eventi come public, privateprotected, internal, , protected internalo private protected. Questi modificatori di accesso definiscono in che modo gli utenti della classe possono accedere all'evento. Per altre informazioni, vedere Modificatori di accesso.

A partire da C# 14, è possibile dichiarare eventi come partial. Gli eventi parziali hanno una dichiarazione di definizione e una dichiarazione di implementazione. La dichiarazione di definizione deve usare la sintassi di tipo campo. La dichiarazione di implementazione deve dichiarare i gestori add e remove.

Parole chiave ed eventi

Agli eventi si applicano le parole chiave seguenti.

  • static: rende l'evento disponibile per i chiamanti in qualsiasi momento, anche se non esiste alcuna istanza della classe . Per altre informazioni sugli eventi statici, vedere Classi statiche e membri di classi statiche.
  • virtual: consente alle classi derivate di eseguire l'override del comportamento dell'evento usando la parola chiave override . Per altre informazioni sugli eventi virtuali, vedere Ereditarietà.
  • sealed: specifica che per le classi derivate non è più virtuale.
  • abstract: il compilatore non genera i blocchi delle add funzioni di accesso agli eventi e remove e pertanto le classi derivate devono fornire la propria implementazione.

Usare la static parola chiave per dichiarare un evento come evento statico. Gli eventi statici sono disponibili per i chiamanti in qualsiasi momento, anche se non esiste alcuna istanza della classe . Per altre informazioni, vedere Classi statiche e membri di classi statiche.

Usare la virtual parola chiave per contrassegnare un evento come evento virtuale. Le classi derivate possono eseguire l'override del comportamento dell'evento usando la override parola chiave . Per altre informazioni, vedere Ereditarietà. Un evento che esegue l'override di un evento virtuale può anche essere sealed, che specifica che per le classi derivate non è più virtuale. Infine, un evento può essere dichiarato abstract, il che significa che il compilatore non genera i blocchi della add funzione di accesso agli eventi e remove . Pertanto, le classi derivate devono fornire la propria implementazione.

Specifiche del linguaggio C#

Per altre informazioni, vedere la specifica del linguaggio C#. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.

Vedi anche