event (Referenční informace k jazyku C#)

Klíčové event slovo slouží k deklaraci události ve třídě vydavatele.

Příklad

Následující příklad ukazuje, jak deklarovat a vyvolat událost, která používá EventHandler jako typ podkladového delegátu. Kompletní příklad kódu, který také ukazuje, jak používat obecný typ delegátu a jak se přihlásit k odběru události a vytvořit metodu obslužné rutiny události, najdete v tématu Postup publikování událostí, které odpovídají pokynům EventHandler<TEventArgs> rozhraní .NET.

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 speciální druh vícesměrového delegáta, který lze vyvolat pouze z třídy nebo struktury, kde jsou deklarovány (třída vydavatele). Pokud se k odběru události přihlásí jiné třídy nebo struktury, budou jejich metody obslužné rutiny události volány při vyvolání události třídou vydavatele. Další informace a příklady kódu najdete v tématu Události a delegáty.

Události je možné označit jako veřejné, privátní, chráněné, interní, chráněné internínebo privátní chráněné. Tyto modifikátory přístupu definují, jak mohou uživatelé třídy přistupovat k události. Další informace najdete v tématu Modifikátory přístupu.

Klíčová slova a události

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

Klíčové slovo Popis Další informace
static Z dostupných událostí volajícím kdykoli, i když neexistuje žádná instance třídy. Statické třídy a jejich členové
Virtuální Umožňuje odvozeným třídám přepsat chování události pomocí klíčového slova override. Dědičnost
sealed Určuje, že pro odvozené třídy už není virtuální.
Abstraktní Kompilátor nevygeneruje bloky add a přistupovače událostí, a proto odvozené třídy musí remove poskytovat vlastní implementaci.

Událost může být deklarována jako statická událost pomocí klíčového slova static. Díky tomu je událost kdykoli dostupná volajícím, i když neexistuje žádná instance třídy. Další informace najdete v tématu Statické třídy a Členy statických tříd.

Událost lze označit jako virtuální událost pomocí klíčového slova virtual. To umožňuje odvozeným třídám přepsat chování události pomocí klíčového slova override. Další informace najdete v tématu Dědičnost. Událost přepisující virtuální událost může být také zapečetěná, která určuje, že pro odvozené třídy už není virtuální. Událost může být nakonec deklarována jako abstraktní,což znamená, že kompilátor nevygeneruje bloky add remove přistupování k událostem a . 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é