händelse (C#-referens)

Nyckelordet event används för att deklarera en händelse i en utgivarklass.

Exempel

I följande exempel visas hur du deklarerar och genererar en händelse som använder EventHandler som den underliggande delegattypen. Det fullständiga kodexemplet som även visar hur du använder den allmänna EventHandler<TEventArgs> delegattypen och hur du prenumererar på en händelse och skapar en händelsehanterarmetod finns i Publicera händelser som följer .NET-riktlinjerna.

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

Händelser är en särskild typ av multicast-ombud som bara kan anropas inifrån klassen (eller härledda klasser) eller struct där de deklareras (utgivarklassen). Om andra klasser eller structs prenumererar på händelsen anropas deras händelsehanterarmetoder när utgivarklassen genererar händelsen. Mer information och kodexempel finns i Händelser och ombud.

Händelser kan markeras som offentliga, privata, skyddade, interna, skyddade interna eller privata skyddade. Dessa åtkomstmodifierare definierar hur användare av klassen kan komma åt händelsen. Mer information finns i Åtkomstmodifierare.

Nyckelord och händelser

Följande nyckelord gäller för händelser.

Nyckelord beskrivning Mer information
static Gör händelsen tillgänglig för anropare när som helst, även om det inte finns någon instans av klassen. Statiska klasser och statiska klassmedlemmar
Virtuella Tillåter härledda klasser att åsidosätta händelsebeteendet med hjälp av nyckelordet åsidosättning . Arv
Förseglade Anger att för härledda klasser är det inte längre virtuellt.
Abstrakt Kompilatorn genererar inte händelseåtkomstblocken add och remove därför måste härledda klasser tillhandahålla en egen implementering.

En händelse kan deklareras som en statisk händelse med hjälp av det statiska nyckelordet. Detta gör händelsen tillgänglig för anropare när som helst, även om det inte finns någon instans av klassen. Mer information finns i Statiska klasser och Statiska klassmedlemmar.

En händelse kan markeras som en virtuell händelse med hjälp av det virtuella nyckelordet. Detta gör det möjligt för härledda klasser att åsidosätta händelsebeteendet med hjälp av nyckelordet åsidosättning . Mer information finns i Arv. En händelse som åsidosätter en virtuell händelse kan också förseglas, vilket anger att den inte längre är virtuell för härledda klasser. Slutligen kan en händelse förklaras abstrakt, vilket innebär att kompilatorn inte genererar händelseåtkomstblocken add och remove . Därför måste härledda klasser tillhandahålla en egen implementering.

Språkspecifikation för C#

Mer information finns i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.

Se även