event (referenční dokumentace jazyka 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.
Příklad
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, který také ukazuje, jak používat obecný EventHandler<TEventArgs> typ delegáta a jak se přihlásit k odběru události a vytvořit metodu obslužné rutiny události, naleznete v tématu Jak publikovat události, které odpovídají pokynům .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 delegáta 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 budou 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 se dají označit jako veřejné, soukromé, chráněné, interní, chráněné nebo soukromé. 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.
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 může být deklarována jako statická událost pomocí statického klíčového slova. Díky tomu je událost kdykoli dostupná volajícím, i když neexistuje žádná instance třídy. 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í virtuálního klíčového slova. To umožňuje odvozené třídy přepsat chování události pomocí klíčového slova přepsání . 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 deklarována jako abstraktní, což znamená, že kompilátor negeneruje add
bloky a remove
přístupové bloky událostí. 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#.