esemény (C#-referencia)
Az esemény olyan tag, amely lehetővé teszi, hogy egy objektum értesítéseket aktiváljon. Az eseményfelhasználók eseménykezelők biztosításával csatolhatnak végrehajtható kódot az eseményekhez. A event
kulcsszó eseményt deklarál. Az esemény delegált típusú. Miközben egy objektum eseményt indít el, az esemény meghívja az összes megadott eseménykezelőt. Az eseménykezelők az eseményhez hozzáadott delegált példányok, amelyeket az esemény létrehozásakor hajtanak végre. Az eseményfelhasználók hozzáadhatják vagy eltávolíthatják eseménykezelőiket egy eseményen.
Példa
Az alábbi példa bemutatja, hogyan deklarálhat és emelhet ki egy eseményt, amely a mögöttes delegálási típust használja EventHandler . Az általános EventHandler<TEventArgs> delegálttípus használatát, valamint az eseményre való feliratkozást és egy eseménykezelő metódus létrehozását bemutató teljes kódért tekintse meg a .NET-irányelveknek megfelelő események közzétételét ismertető témakört.
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"));
}
}
Az események olyan speciális csoportos küldési meghatalmazottak, amelyek csak az osztályon (vagy származtatott osztályokon) belülről hívhatók meg, vagy a deklarált osztályból (a közzétevő osztályból) hívhatók meg. Ha más osztályok vagy szerkezetek előfizetnek az eseményre, az eseménykezelő metódusok akkor lesznek meghívva, amikor a közzétevő osztály létrehozza az eseményt. További információ és példakód: Események és meghatalmazottak.
Az események megjelölhetők nyilvános, privát, védett, belső, védett belső vagy magánvédettként. Ezek a hozzáférési módosítók határozzák meg, hogy az osztály felhasználói hogyan férhetnek hozzá az eseményhez. További információ: Access Modifiers.
Kulcsszavak és események
Az alábbi kulcsszavak az eseményekre vonatkoznak.
Kulcsszó | Leírás | További információ |
---|---|---|
static | Az eseményt bármikor elérhetővé teszi a hívók számára, még akkor is, ha az osztálynak nincs példánya. | Statikus osztályok és statikus osztálytagok |
virtuális | Lehetővé teszi, hogy a származtatott osztályok felülbírálják az esemény viselkedését a felülbírálási kulcsszó használatával. | Örökség |
lezárt | Azt adja meg, hogy származtatott osztályok esetén az már nem virtuális. | |
elvont | A fordító nem hozza létre az és remove az add eseményhez tartozó kiegészítő blokkokat, ezért a származtatott osztályoknak saját megvalósítást kell biztosítaniuk. |
Az események statikus eseményként deklarálhatók a statikus kulcsszó használatával. Így az esemény bármikor elérhetővé válik a hívók számára, még akkor is, ha az osztálynak nincs példánya. További információ: Statikus osztályok és statikus osztálytagok.
Az események a virtuális kulcsszóval jelölhetők meg virtuális eseményként. Ez lehetővé teszi, hogy a származtatott osztályok felülbírálják az esemény viselkedését a felülbírálási kulcsszó használatával. További információ: Öröklés. Egy virtuális eseményt felülíró esemény is lezárható, ami azt határozza meg, hogy származtatott osztályok esetén az már nem virtuális. Végül egy esemény absztraktként deklarálható, ami azt jelenti, hogy a fordító nem hozza létre az és remove
az add
eseményhez tartozó kiegészítő blokkokat. Ezért a származtatott osztályoknak saját megvalósítást kell biztosítaniuk.
C# nyelvspecifikáció
További információkért lásd a C# nyelvi specifikációját. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.