Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Klíčové slovo (referenční dokumentace jazyka
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#.