Delen via


Het event trefwoord (C#-verwijzing)

Een gebeurtenis is een lid waarmee een object meldingen kan activeren. Gebeurtenisgebruikers kunnen uitvoerbare code voor gebeurtenissen koppelen door gebeurtenis-handlers op te leveren. Het event trefwoord declareert een gebeurtenis. De gebeurtenis is van een type gemachtigde. Terwijl een object een gebeurtenis activeert, roept de gebeurtenis alle opgegeven gebeurtenis-handlers aan. Gebeurtenis-handlers zijn gedelegeerde instanties die aan de gebeurtenis zijn toegevoegd en worden uitgevoerd wanneer de gebeurtenis wordt gegenereerd. Gebeurtenisgebruikers kunnen hun gebeurtenis-handlers toevoegen of verwijderen voor een gebeurtenis.

De C#-taalreferentiedocumenten beschrijven de meest recent uitgebrachte versie van de C#-taal. Het bevat ook de eerste documentatie voor functies in openbare previews voor de aanstaande taalrelease.

De documentatie identificeert alle functies die voor het eerst zijn geïntroduceerd in de laatste drie versies van de taal of in de huidige openbare previews.

Aanbeveling

Raadpleeg het artikel over de versiegeschiedenis van de C#-taal om te achterhalen wanneer een functie voor het eerst is geïntroduceerd in C#.

In het volgende voorbeeld ziet u hoe u een gebeurtenis declareert en genereert die wordt gebruikt EventHandler als het onderliggende gedelegeerdentype. Zie Gebeurtenissen publiceren die voldoen aan .NET-richtlijnen voor het volledige codevoorbeeld. In dit voorbeeld ziet u het algemene EventHandler<TEventArgs> type gemachtigde, hoe u zich abonneert op een gebeurtenis en hoe u een gebeurtenis-handlermethode maakt.

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"));
    }
}

Gebeurtenissen zijn multicast-gemachtigden die u alleen kunt aanroepen vanuit de klasse (of afgeleide klassen) of struct waar u ze declareert (de uitgeversklasse). Als andere klassen of structs zich abonneren op de gebeurtenis, worden de methoden van de gebeurtenis-handler aangeroepen wanneer de uitgeverklasse de gebeurtenis genereert. Zie Gebeurtenissen en gemachtigden voor meer informatie en codevoorbeelden.

U kunt gebeurtenissen markeren als public, private, protected, internal, , protected internalof private protected. Deze toegangsaanpassingen bepalen hoe gebruikers van de klasse toegang hebben tot de gebeurtenis. Zie Toegangsmodifiers voor meer informatie.

Vanaf C# 14 kunt u gebeurtenissen declareren als partial. Gedeeltelijke gebeurtenissen hebben één definitiedeclaratie en één uitvoeringsdeclaratie. De definiërende declaratie moet gebruikmaken van de veldachtige syntaxis. De uitvoeringsdeclaratie moet de add en remove handlers declareren.

Trefwoorden en gebeurtenissen

De volgende trefwoorden zijn van toepassing op gebeurtenissen.

  • static: maakt de gebeurtenis op elk gewenst moment beschikbaar voor bellers, zelfs als er geen exemplaar van de klasse bestaat. Zie Statische klassen en statische klasseleden voor meer informatie over statische gebeurtenissen.
  • virtual: Hiermee kunnen afgeleide klassen het gedrag van de gebeurtenis overschrijven met behulp van het trefwoord overschrijven . Zie Overname voor meer informatie over virtuele gebeurtenissen.
  • sealed: Geeft aan dat het voor afgeleide klassen niet langer virtueel is.
  • abstract: De compiler genereert add de toegangsblokken en remove gebeurtenistoegangsblokken niet en daarom moeten afgeleide klassen hun eigen implementatie bieden.

Gebruik het static trefwoord om een gebeurtenis als een statische gebeurtenis te declareren. Statische gebeurtenissen zijn op elk gewenst moment beschikbaar voor bellers, zelfs als er geen exemplaar van de klasse bestaat. Zie Statische klassen en statische klasseleden voor meer informatie.

Gebruik het virtual trefwoord om een gebeurtenis als een virtuele gebeurtenis te markeren. Afgeleide klassen kunnen het gedrag van gebeurtenissen overschrijven met behulp van het override trefwoord. Zie Overname voor meer informatie. Een gebeurtenis die een virtuele gebeurtenis overschrijft, kan ook zijn sealed, waarmee wordt aangegeven dat het voor afgeleide klassen niet meer virtueel is. Ten slotte kan een gebeurtenis worden gedeclareerdabstract, wat betekent dat de compiler de toegangsblokken en add gebeurtenistoegangsblokken niet genereertremove. Daarom moeten afgeleide klassen hun eigen implementatie bieden.

C#-taalspecificatie

Zie de C#-taalspecificatie voor meer informatie. De taalspecificatie is de definitieve bron voor de C#-syntaxis en het gebruik.

Zie ook