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.
Referenční dokumentace jazyka C# dokumentuje naposledy vydané verze jazyka C#. Obsahuje také počáteční dokumentaci k funkcím ve verzi Public Preview pro nadcházející jazykovou verzi.
Dokumentace identifikuje všechny funkce, které byly poprvé představeny v posledních třech verzích jazyka nebo v aktuálních verzích Public Preview.
Návod
Informace o tom, kdy byla funkce poprvé představena v jazyce C#, najdete v článku o historii verzí jazyka C#.
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é můžete vyvolat pouze z třídy (nebo odvozené třídy) nebo struktury, kde je deklarujete (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 můžete označit jako public, private, protectedinternal, , 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 můžete deklarovat události jako partial. Čá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.
-
static: Zpřístupní událost volajícím kdykoli, i když neexistuje žádná instance třídy. Další informace ostatických -
virtual: Umožňuje odvozené třídy přepsat chování události pomocí klíčového slova přepsání . Další informace o virtuálních událostech najdete v tématu Dědičnost. -
sealed: Určuje, že pro odvozené třídy již není virtuální. -
abstract: Kompilátor negenerujeaddbloky aremoveobjektové objekty událostí, a proto odvozené třídy musí poskytovat vlastní implementaci.
Pomocí klíčového static slova deklarujte událost jako statickou událost. 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.
Pomocí klíčového virtual slova označte událost jako virtuální událost. 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 add objekty remove 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#.