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 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 Description 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 negeneruje add bloky pro přístup k remove událostem a proto odvozené třídy musí poskytovat svou vlastní implementaci.

Událost může být deklarována jako statická událost pomocí klíčového slova static . Tím se událost zpřístupní volajícím kdykoli, i když žádná instance třídy neexistuje. Další informace naleznete v tématu statické třídy a statické členy třídy.

Událost může být označena 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řepsání virtuální události může být také zapečetěna, což určuje, že pro odvozené třídy již není virtuální. Nakonec může být událost deklarovaná jako abstraktní, což znamená, že kompilátor negeneruje add remove bloky přistupujícího objektu a události. Proto odvozené třídy musí poskytovat svou 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é