event (Riferimenti per C#)event (C# Reference)

La parola chiave event viene usata per dichiarare un evento in una classe autore.The event keyword is used to declare an event in a publisher class.

EsempioExample

L'esempio seguente illustra come dichiarare e generare un evento che usa EventHandler come tipo di delegato sottostante.The following example shows how to declare and raise an event that uses EventHandler as the underlying delegate type. Per l'esempio di codice completo che illustra anche come usare il tipo di delegato generico EventHandler<TEventArgs> e come sottoscrivere un evento e creare un metodo per il gestore dell'evento, vedere Procedura: Pubblicare eventi conformi alle linee guida di .NET Framework.For the complete code example that also shows how to use the generic EventHandler<TEventArgs> delegate type and how to subscribe to an event and create an event handler method, see How to: Publish Events that Conform to .NET Framework Guidelines.

public class SampleEventArgs
{
    public SampleEventArgs(string s) { Text = s; }
    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 by using the () operator.
        if (SampleEvent != null)
            SampleEvent(this, new SampleEventArgs("Hello"));
    }
}

Gli eventi sono un tipo di delegati multicast speciali che possono essere chiamati solo dall'interno della classe o dello struct in cui sono dichiarati (la classe autore).Events are a special kind of multicast delegate that can only be invoked from within the class or struct where they are declared (the publisher class). Se altre classi o altri struct sottoscrivono l'evento, i metodi di gestione eventi corrispondenti verranno chiamati quando la classe publisher genera l'evento.If other classes or structs subscribe to the event, their event handler methods will be called when the publisher class raises the event. Per altre informazioni e altri esempi di codice, vedere Eventi e Delegati.For more information and code examples, see Events and Delegates.

Gli eventi possono essere contrassegnati come public, private, protected, internal, protected internal o private protected.Events can be marked as public, private, protected, internal, protected internal or private protected. Questi modificatori di accesso definiscono in che modo gli utenti della classe possono accedere all'evento.These access modifiers define how users of the class can access the event. Per altre informazioni, vedere Access Modifiers (Modificatori di accesso).For more information, see Access Modifiers.

Parole chiave ed eventiKeywords and Events

Agli eventi si applicano le parole chiave seguenti.The following keywords apply to events.

Parola chiaveKeyword DescriptionDescription Per altre informazioniFor more information
staticstatic Rende l'evento disponibile per i chiamanti in qualsiasi momento, anche se non esiste alcuna istanza della classe.Makes the event available to callers at any time, even if no instance of the class exists. Classi statiche e membri di classi staticheStatic Classes and Static Class Members
virtualvirtual Consente alle classi derivate di eseguire l'override del comportamento dell'evento tramite la parola chiave override.Allows derived classes to override the event behavior by using the override keyword. EreditarietàInheritance
sealedsealed Specifica che per le classi derivate l'evento non è più virtuale.Specifies that for derived classes it is no longer virtual.
abstractabstract Il compilatore non genererà i blocchi di funzioni di accesso degli eventi add e remove e pertanto le classi derivate dovranno fornire la propria implementazione.The compiler will not generate the add and remove event accessor blocks and therefore derived classes must provide their own implementation.

Un evento può essere dichiarato statico mediante la parola chiave static.An event may be declared as a static event by using the static keyword. Ciò rende l'evento disponibile per i chiamanti in qualsiasi momento, anche se non esiste alcuna istanza della classe.This makes the event available to callers at any time, even if no instance of the class exists. Per altre informazioni, vedere Classi statiche e membri di classi statiche.For more information, see Static Classes and Static Class Members.

Un evento può essere contrassegnato come virtuale mediante la parola chiave virtual.An event can be marked as a virtual event by using the virtual keyword. Ciò consente alle classi derivate di eseguire l'override del comportamento dell'evento tramite la parola chiave override.This enables derived classes to override the event behavior by using the override keyword. Per altre informazioni, vedere Ereditarietà.For more information, see Inheritance. Un evento che esegue l'override di un evento virtuale può anche essere contrassegnato come sealed, in modo che non risulti più virtuale per le classi derivate.An event overriding a virtual event can also be sealed, which specifies that for derived classes it is no longer virtual. Infine, un evento può essere dichiarato abstract, in modo che il compilatore non generi blocchi di funzioni di accesso agli eventi add e remove.Lastly, an event can be declared abstract, which means that the compiler will not generate the add and remove event accessor blocks. Le classi derivate devono pertanto fornire la propria implementazione.Therefore derived classes must provide their own implementation.

Specifiche del linguaggio C#C# Language Specification

Per altre informazioni, vedere la specifica del linguaggio C#.For more information, see the C# Language Specification. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.The language specification is the definitive source for C# syntax and usage.

Vedere ancheSee also