event (C#-Referenz)
Aktualisiert: November 2007
Das event-Schlüsselwort wird verwendet, um in einer Herausgeberklasse ein Ereignis zu deklarieren.
Beispiel
Im folgenden Beispiel wird gezeigt, wie ein Ereignis, das EventHandler als zugrunde liegenden Delegattyp verwendet, deklariert und ausgelöst wird. Das vollständige Codebeispiel, das zudem die Verwendung des generischen EventHandler<TEventArgs>-Delegattyps, das Abonnieren eines Ereignisses und das Erstellen einer Ereignishandlermethode veranschaulicht, finden Sie unter Gewusst wie: Veröffentlichen von Ereignissen, die den .NET Framework-Richtlinien entsprechen (C#-Programmierhandbuch).
public class SampleEventArgs
{
public SampleEventArgs(string s) { Text = s; }
public String Text {get; private set;} // 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 by using the () operator.
SampleEvent(this, new SampleEventArgs("Hello"));
}
}
Ereignisse sind ein spezieller Typ von Multicastdelegaten, die nur innerhalb der Klasse oder Struktur aufgerufen werden können, in der sie deklariert wurden (die Herausgeberklasse). Wenn andere Klassen oder Strukturen das Ereignis abonnieren, werden ihre Ereignishandlermethoden aufgerufen, wenn die Herausgeberklasse das Ereignis auslöst. Weitere Informationen und Codebeispiele finden Sie unter Ereignisse (C#-Programmierhandbuch) und Delegaten (C#-Programmierhandbuch).
Ereignisse können als public, private, protected, internal oder protectedinternal gekennzeichnet werden. Diese Zugriffsmodifizierer definieren, wie Benutzer der Klasse auf das Ereignis zugreifen können. Weitere Informationen hierzu finden Sie unter Zugriffsmodifizierer (C#-Programmierhandbuch).
Schlüsselwörter und Ereignisse
Die folgenden Schlüsselwörter gelten für Ereignisse.
Schlüsselwort |
Beschreibung |
Weitere Informationen |
---|---|---|
Macht das Ereignis jederzeit für Aufrufer verfügbar, selbst wenn keine Instanz der Klasse vorhanden ist. |
Statische Klassen und statische Klassenmember (C#-Programmierhandbuch) |
|
Ermöglicht es abgeleiteten Klassen, das Verhalten von Ereignissen mit dem override-Schlüsselwort zu überschreiben. |
||
Gibt an, dass es für abgeleitete Klassen nicht mehr virtuell ist. |
|
|
Der Compiler generiert keinen add-Ereignisaccessorblock und remove-Ereignisaccessorblock, sodass abgeleitete Klassen ihre eigene Implementierung bereitstellen müssen. |
|
Ein Ereignis kann mit dem static-Schlüsselwort als statisches Ereignis deklariert werden. Dadurch wird das Ereignis jederzeit für Aufrufer verfügbar, selbst wenn keine Instanz der Klasse vorhanden ist. Weitere Informationen hierzu finden Sie unter Statische Klassen und statische Klassenmember (C#-Programmierhandbuch).
Ein Ereignis kann mit dem virtual-Schlüsselwort als virtuelles Ereignis gekennzeichnet werden. Dies ermöglicht abgeleiteten Klassen, das Verhalten von Ereignissen mit dem override-Schlüsselwort zu überschreiben. Weitere Informationen hierzu finden Sie unter Vererbung (C#-Programmierhandbuch). Ein Ereignis, das ein virtuelles Ereignis überschreibt, kann auch versiegelt sein. Damit wird angegeben, dass es für abgeleitete Klassen nicht mehr virtuell ist. Schließlich kann ein Ereignis als abstrakt deklariert werden, d. h., der Compiler generiert keinen add-Ereignisaccessorblock und keinen remove-Ereignisaccessorblock. Somit müssen abgeleitete Klassen ihre eigene Implementierung bereitstellen.
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
1.6.6.4 Ereignisse
7.16.3 Ereigniszuweisung
10.8 Ereignisse
13.2.3 Schnittstellenereignisse
Siehe auch
Aufgaben
Gewusst wie: Kombinieren von Delegaten (Multicastdelegaten) (C#-Programmierhandbuch)