Megosztás:


A event kulcsszó (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.

A C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.

A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.

Jótanács

Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.

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 . A teljes példakódért tekintse meg a .NET-irányelveknek megfelelő események közzétételét ismertető témakört. Ez a minta bemutatja az általános EventHandler<TEventArgs> delegálás típusát, az eseményre való feliratkozást és egy eseménykezelő metódus létrehozását.

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 csoportos küldésű meghatalmazottak, amelyeket csak az osztályból (vagy származtatott osztályokból) hívhat meg, vagy strukturálhatja, ahol deklarálja őket (a közzétevő osztály). Ha más osztályok vagy szerkezetek előfizetnek az eseményre, az eseménykezelő metódusaik akkor lesznek meghívva, amikor a közzétevő osztály előhívja az eseményt. További információ és példakód: Események és meghatalmazottak.

Az eseményeket publicmegjelölheti , private, protected, internalprotected internalvagy private protected. 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.

A C# 14-től kezdve eseményeket partialdeklarálhat . A részleges események egy meghatározó deklarációval és egy végrehajtási deklarációval rendelkeznek. A definiáló deklarációnak mezőszerű szintaxist kell használnia. A végrehajtási nyilatkozatnak deklarálnia kell a add és remove kezelőket.

Kulcsszavak és események

Az alábbi kulcsszavak az eseményekre vonatkoznak.

  • 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. A statikus eseményekről további információt a Statikus osztályok és a Statikus osztálytagok című témakörben talál.
  • virtual: 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. A virtuális eseményekről további információt az Öröklés című témakörben talál.
  • sealed: Azt adja meg, hogy származtatott osztályok esetén az már nem virtuális.
  • abstract: 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.

static A kulcsszó használatával deklarálhat egy eseményt statikus eseményként. A statikus események bármikor elérhetők 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.

virtual A kulcsszóval megjelölhet egy eseményt virtuális eseményként. A származtatott osztályok a kulcsszó használatával felülbírálhatják az esemény viselkedését override . További információ: Öröklés. Egy virtuális eseményt felülíró esemény lehet az is sealed, amely azt határozza meg, hogy származtatott osztályok esetén már nem virtuális. Végül deklarálható abstractegy esemény, ami azt jelenti, hogy a fordító nem hozza létre az és add az remove 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.

Lásd még