Sdílet prostřednictvím


Klíčové slovo (referenční dokumentace jazyka event C#)

Událost je člen, který objektu umožňuje aktivovat oznámení. Uživatelé událostí mohou připojit spustitelný kód pro události zadáním obslužných rutin událostí. Klíčové event slovo deklaruje událost. Událost je typu delegáta. Zatímco objekt aktivuje událost, událost vyvolá všechny zadané obslužné rutiny událostí. Obslužné rutiny událostí jsou instance delegátů přidané do události a spouštěny při vyvolání události. Uživatelé událostí můžou přidávat nebo odebírat obslužné rutiny událostí události.

Následující příklad ukazuje, jak deklarovat a vyvolat událost, která se používá EventHandler jako základní typ delegáta. Úplný příklad kódu naleznete v tématu Publikování událostí, které odpovídají pokynům .NET. Tato ukázka ukazuje obecný EventHandler<TEventArgs> typ delegáta, jak se přihlásit k odběru události a vytvořit metodu obslužné rutiny události.

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

Události jsou delegáty vícesměrového vysílání, které lze vyvolat pouze z třídy (nebo odvozené třídy) nebo struktury, kde jsou deklarovány (třída vydavatele). Pokud se jiné třídy nebo struktury přihlásí k odběru události, jejich metody obslužné rutiny události jsou volány, když třída vydavatele vyvolá událost. Další informace a příklady kódu najdete v tématu Události a delegáti.

Události mohou být označeny jako public, private, protected, internal, protected internal, nebo private protected. Tyto modifikátory přístupu definují, jak mají uživatelé třídy přístup k události. Další informace naleznete v tématu Modifikátory accessu.

Počínaje jazykem C# 14 mohou být partialudálosti . Částečné události mají jednu definující deklaraci a jednu implementující deklaraci. Definice deklarace musí používat syntaxi typu pole. Deklarace implementace musí uvádět obslužné rutiny add a remove.

Klíčová slova a události

Následující klíčová slova platí pro události.

Klíčové slovo Popis Získání dalších informací
static Zpřístupní událost volajícím kdykoli, i když žádná instance třídy neexistuje. Statické třídy a jejich členové
virtual Umožňuje odvozené třídy přepsat chování události pomocí klíčového slova přepsání . Dědičnost
sealed Určuje, že pro odvozené třídy již není virtuální.
abstract Kompilátor negeneruje add bloky a remove objektové objekty událostí, a proto odvozené třídy musí poskytovat vlastní implementaci.

Událost lze deklarovat jako statickou událost pomocí statického klíčového slova. Statické události jsou kdykoli k dispozici volajícím, i když žádná instance třídy neexistuje. Další informace naleznete v tématu Statické třídy a členy statické třídy.

Událost může být označena jako virtuální událost pomocí klíčového virtual slova. Odvozené třídy mohou přepsat chování události pomocí klíčového override slova. Další informace najdete v tématu Dědičnost. Událost přepsání virtuální události může být sealedtaké , která určuje, že pro odvozené třídy již není virtuální. Nakonec lze deklarovat abstractudálost, což znamená, že kompilátor negeneruje bloky a remove objekty add pro přístup k událostem. Odvozené třídy proto musí poskytovat vlastní implementaci.

specifikace jazyka C#

Další informace najdete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také