event (C#-Referenz)event (C# Reference)

Das event-Schlüsselwort wird verwendet, um ein Ereignis in einer Publisher-Klasse zu deklarieren.The event keyword is used to declare an event in a publisher class.

BeispielExample

Das folgende Beispiel zeigt das Deklarieren und Auslösen eines Ereignisses, das EventHandler als zugrunde liegenden Delegattyp verwendet.The following example shows how to declare and raise an event that uses EventHandler as the underlying delegate type. Für das vollständige Codebeispiel, das auch veranschaulicht, wie der generische Delegattyp EventHandler<TEventArgs> verwendet wird und wie man ein Ereignis abonniert und eine Ereignishandlermethode erstellt, finden Sie unter Vorgehensweise: Veröffentlichen von Ereignissen, die den .NET Framework-Richtlinien entsprechen.For the complete code example that also shows how to use the generic EventHandler<TEventArgs> delegate type and how to subscribe to an event and create an event handler method, see How to: Publish Events that Conform to .NET Framework Guidelines.


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.
        if (SampleEvent != null)
            SampleEvent(this, new SampleEventArgs("Hello"));
    }
}

Ereignisse sind eine besondere Art von Multicastdelegaten, die nur aus der Klasse oder Struktur, in der sie deklariert sind (Publisher-Klasse), aufgerufen werden können.Events are a special kind of multicast delegate that can only be invoked from within the class or struct where they are declared (the publisher class). Wenn andere Klassen oder Strukturen das Ereignis abonnieren, werden ihre Ereignishandlermethoden aufgerufen werden, wenn die Publisher-Klasse das Ereignis auslöst.If other classes or structs subscribe to the event, their event handler methods will be called when the publisher class raises the event. Weitere Informationen und Codebeispiele finden Sie unter Ereignisse und Delegaten.For more information and code examples, see Events and Delegates.

Ereignisse können gekennzeichnet werden, als öffentlichen, private, geschützt, interne, protected internal oder privaten, geschützten.Events can be marked as public, private, protected, internal, protected internal or private protected. Diese Zugriffsmodifizierer definieren, wie Benutzer der Klasse auf das Ereignis zugreifen können.These access modifiers define how users of the class can access the event. Weitere Informationen finden Sie unter Zugriffsmodifizierer.For more information, see Access Modifiers.

Schlüsselwörter und EreignisseKeywords and Events

Die folgenden Schlüsselwörter gelten für Ereignisse.The following keywords apply to events.

StichwortKeyword BeschreibungDescription Weitere InformationenFor more information
staticstatic Stellt das Ereignis Aufrufern jederzeit zur Verfügung, auch wenn keine Instanz der Klasse vorhanden ist.Makes the event available to callers at any time, even if no instance of the class exists. Statische Klassen und statische KlassenmemberStatic Classes and Static Class Members
virtualvirtual Ermöglicht abgeleiteten Klassen, das Ereignisverhalten mithilfe des override-Schlüsselworts zu überschreiben.Allows derived classes to override the event behavior by using the override keyword. VererbungInheritance
sealedsealed Gibt an, dass für abgeleitete Klassen „virtual“ nicht mehr gilt.Specifies that for derived classes it is no longer virtual.
abstractabstract Der Compiler wird keine add- und remove-Ereignisaccessorblöcke generieren und daher müssen abgeleitete Klassen ihre eigene Implementierung bereitstellen.The compiler will not generate the add and remove event accessor blocks and therefore derived classes must provide their own implementation.

Ein Ereignis kann mithilfe des static-Schlüsselworts als statisches Ereignis deklariert werden.An event may be declared as a static event by using the static keyword. Dadurch steht das Ereignis Aufrufern jederzeit zur Verfügung, auch wenn keine Instanz der Klasse vorhanden ist.This makes the event available to callers at any time, even if no instance of the class exists. Weitere Informationen finden Sie unter Statische Klassen und statische Klassenmember.For more information, see Static Classes and Static Class Members.

Ein Ereignis kann mithilfe des virtual-Schlüsselworts als virtuelles Ereignis gekennzeichnet werden.An event can be marked as a virtual event by using the virtual keyword. Dies ermöglicht abgeleiteten Klassen, das Ereignisverhalten mithilfe des override-Schlüsselworts zu überschreiben.This enables derived classes to override the event behavior by using the override keyword. Weitere Informationen finden Sie unter Vererbung.For more information, see Inheritance. Ein Ereignis, das ein virtuelles Ereignis überschreibt, kann auch sealed sein, was angibt, dass für abgeleitete Klassen „virtual“ nicht mehr gilt.An event overriding a virtual event can also be sealed, which specifies that for derived classes it is no longer virtual. Schließlich kann ein Ereignis als abstract deklariert werden, d.h., dass der Compiler die add- und remove-Ereignisaccessorblöcke nicht generieren wird.Lastly, an event can be declared abstract, which means that the compiler will not generate the add and remove event accessor blocks. Daher müssen abgeleitete Klassen ihre eigene Implementierung bereitstellen.Therefore derived classes must provide their own implementation.

C#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
addadd
removeremove
ModifiziererModifiers
How to: Combine Delegates (Multicast Delegates) (Vorgehensweise: Kombinieren von Delegaten (Multicastdelegaten))How to: Combine Delegates (Multicast Delegates)