Ereignisse (events) in C#
In dieser Lektion deklarierst du ein Ereignis, meldest einen Handler an und löst das Ereignis bei einer Änderung aus.
Einführung
Ein Ereignis (event) erlaubt einem Objekt, andere Objekte zu benachrichtigen, wenn etwas passiert, nach dem Modell Herausgeber und Abonnent (publisher/subscriber). Das ist in der Oberflächenprogrammierung ein vertrauter Mechanismus, etwa wenn der Benutzer auf eine Schaltfläche klickt.
Die Klasse Counter deklariert das Ereignis ThresholdReached. In Main meldet der Operator += ein Lambda als Handler für das Ereignis an. Wird ReachThreshold() aufgerufen, löst der Operator ?. das Ereignis nur aus, wenn mindestens ein Abonnent angemeldet ist. Von außen kann man sich nur an- oder abmelden, das Auslösen des Ereignisses ist der Klasse Counter vorbehalten.
Ausführbares C#-Beispiel
using System;
class Counter
{
public event EventHandler? ThresholdReached;
public void ReachThreshold() => ThresholdReached?.Invoke(this, EventArgs.Empty);
}
class Program
{
static void Main()
{
var counter = new Counter();
counter.ThresholdReached += (_, _) => Console.WriteLine("Threshold reached");
counter.ReachThreshold();
}
}
Threshold reachedMit dem Debugger üben
Mit einer Challenge üben
Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.
Alle Challenges