Udostępnij za pośrednictwem


zdarzenie (odwołanie w C#)

Zdarzenie jest elementem członkowskim, który umożliwia obiektowi wyzwalanie powiadomień. Użytkownicy zdarzeń mogą dołączać kod wykonywalny dla zdarzeń, dostarczając programy obsługi zdarzeń. Słowo event kluczowe deklaruje zdarzenie. Zdarzenie jest typu delegata. Gdy obiekt wyzwala zdarzenie, zdarzenie wywołuje wszystkie dostarczone programy obsługi zdarzeń. Programy obsługi zdarzeń to wystąpienia delegowane dodawane do zdarzenia i wykonywane po wystąpieniu zdarzenia. Użytkownicy zdarzeń mogą dodawać lub usuwać programy obsługi zdarzeń w zdarzeniu.

Przykład

W poniższym przykładzie pokazano, jak zadeklarować i zgłosić zdarzenie, które jest używane EventHandler jako podstawowy typ delegata. Pełny przykład kodu, który pokazuje również, jak używać ogólnego EventHandler<TEventArgs> typu delegata i jak subskrybować zdarzenie i utworzyć metodę obsługi zdarzeń, zobacz Jak publikować zdarzenia zgodne z wytycznymi platformy .NET.

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

Zdarzenia są specjalnym rodzajem delegata multiemisji, który może być wywoływany tylko z klasy (lub klas pochodnych) lub struktury, w której są deklarowane (klasa wydawcy). Jeśli inne klasy lub struktury subskrybują zdarzenie, ich metody obsługi zdarzeń będą wywoływane, gdy klasa wydawcy zgłasza zdarzenie. Aby uzyskać więcej informacji i przykładów kodu, zobacz Zdarzenia i delegaty.

Zdarzenia mogą być oznaczone jako publiczne, prywatne, chronione, wewnętrzne, chronione wewnętrzne lub prywatne. Te modyfikatory dostępu definiują, jak użytkownicy klasy mogą uzyskiwać dostęp do zdarzenia. Aby uzyskać więcej informacji, zobacz Modyfikatory dostępu.

Słowa kluczowe i zdarzenia

Następujące słowa kluczowe dotyczą zdarzeń.

Słowo kluczowe opis Więcej informacji
static Udostępnia zdarzenie obiektom wywołującym w dowolnym momencie, nawet jeśli nie istnieje żadne wystąpienie klasy. Klasy statyczne i statyczne elementy członkowskie klas
virtual Umożliwia klasom pochodnym zastąpienie zachowania zdarzenia za pomocą słowa kluczowego zastąpienia . Dziedziczenie
sealed Określa, że dla klas pochodnych nie jest już wirtualny.
abstract Kompilator nie wygeneruje add bloków metod dostępu do zdarzeń i remove i dlatego klasy pochodne muszą zapewnić własną implementację.

Zdarzenie może być zadeklarowane jako zdarzenie statyczne przy użyciu statycznego słowa kluczowego. Dzięki temu zdarzenie jest dostępne dla osób wywołujących w dowolnym momencie, nawet jeśli żadne wystąpienie klasy nie istnieje. Aby uzyskać więcej informacji, zobacz Klasy statyczne i składowe klas statycznych.

Zdarzenie można oznaczyć jako zdarzenie wirtualne za pomocą wirtualnego słowa kluczowego. Dzięki temu klasy pochodne mogą zastąpić zachowanie zdarzenia za pomocą słowa kluczowego zastąpienia . Aby uzyskać więcej informacji, zobacz Dziedziczenie. Zdarzenie przesłaniające zdarzenie wirtualne może być również zapieczętowane, co określa, że dla klas pochodnych nie jest już wirtualny. Na koniec zdarzenie można zadeklarować jako abstrakcyjne, co oznacza, że kompilator nie wygeneruje bloków dostępu do zdarzeń add i remove . W związku z tym klasy pochodne muszą zapewnić własną implementację.

specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.

Zobacz też