C# Events: A Beginner's Guide
Hallo, angehende Programmierer! Heute tauchen wir in die aufregende Welt der C#-Events ein. Als dein freundlicher Nachbarschafts-Computerlehrer bin ich hier, um dich auf dieser Reise Schritt für Schritt zu führen. Mach dir keine Sorgen, wenn du neu im Programmieren bist – wir beginnen bei den Grundlagen und arbeiten uns hoch. Los geht's!
Was sind Events?
Stelle dir vor, du bist auf einer Party und wartest darauf, dass dein Freund ankommt. Wenn er es tut, möchtest du ihn begrüßen. In C# funktionieren Events ähnlich – sie sind eine Möglichkeit für Objekte, andere Objekte zu benachrichtigen, wenn etwas Interessantes passiert. Es ist wie das Einrichten eines "Benachrichtigungssystems" in deinem Code.
Realwelt-Ähnlichkeit
Denke an Events wie an eine Türklingel. Wenn jemand die Klingel drückt (das Event), reagierst du (der Event-Handler) indem du zur Tür gehst. Die Klingel weiß oder interessiert sich nicht, wer reagiert – sie verkündet nur, dass jemand vor der Tür ist.
Verwendung von Delegates mit Events
Bevor wir uns den Events widmen, müssen wir Delegates verstehen. Mach dir keine Sorgen; sie sind nicht so schrecklich, wie sie klingen!
Was sind Delegates?
Delegates sind wie Mittelsmänner in C#. Sie halten Referenzen zu Methoden (Funktionen) und können diese Methoden bei Bedarf aufrufen. Stell dir einen Delegate als eine sophisticated Visitenkarte vor, die nicht nur Kontaktdaten hat, sondern auch für dich anrufen kann!
Schauen wir uns ein einfaches Delegate-Beispiel an:
public delegate void SimpleDelegate(string message);
class Program
{
static void Main(string[] args)
{
SimpleDelegate d = new SimpleDelegate(ShowMessage);
d("Hallo, Delegates!");
}
static void ShowMessage(string message)
{
Console.WriteLine(message);
}
}
In diesem Beispiel ist SimpleDelegate
unser Delegate-Typ. Wir erstellen eine Instanz davon (d
) und verknüpfen sie mit der Methode ShowMessage
. Wenn wir d("Hallo, Delegates!")
aufrufen, ruft es actually ShowMessage("Hallo, Delegates!")
auf.
Deklaration von Events
Nun, da wir Delegates verstehen, sehen wir, wie Events funktionieren. Events werden typischerweise mit Delegates deklariert. Hier ist die grundlegende Syntax:
public event DelegateType EventName;
Lassen wir ein praktischeres Beispiel erstellen. Stellen wir uns vor, wir bauen eine einfache Bankanwendung:
public class BankAccount
{
private decimal balance;
public delegate void BalanceChangedEventHandler(decimal newBalance);
public event BalanceChangedEventHandler BalanceChanged;
public decimal Balance
{
get { return balance; }
set
{
balance = value;
OnBalanceChanged(balance);
}
}
protected virtual void OnBalanceChanged(decimal newBalance)
{
BalanceChanged?.Invoke(newBalance);
}
}
In diesem Beispiel haben wir eine BankAccount
-Klasse mit einem BalanceChanged
-Event erstellt. Wenn sich das Guthaben ändert, wird dieses Event ausgelöst.
Beispiel: Alles zusammenbringen
Schauen wir uns an, wie wir diese BankAccount
-Klasse mit ihrem Event verwenden können:
class Program
{
static void Main(string[] args)
{
BankAccount account = new BankAccount();
account.BalanceChanged += Account_BalanceChanged;
account.Balance = 1000;
account.Balance = 2000;
account.Balance = 500;
}
private static void Account_BalanceChanged(decimal newBalance)
{
Console.WriteLine($"Ihr neues Guthaben beträgt: ${newBalance}");
}
}
Wenn du dieses Programm ausführst, wirst du Folgendes sehen:
Ihr neues Guthaben beträgt: $1000
Ihr neues Guthaben beträgt: $2000
Ihr neues Guthaben beträgt: $500
Zerlegung
- Wir erstellen ein
BankAccount
-Objekt. - Wir abonnieren sein
BalanceChanged
-Event mit dem+=
-Operator. - Wir ändern das Guthaben dreimal.
- Jedes Mal, wenn das Guthaben sich ändert, wird unsere
Account_BalanceChanged
-Methode automatisch aufgerufen.
Dies ist die Magie der Events! Die BankAccount
-Klasse muss nicht wissen, wer ihre Änderungen hört. Sie verkündet sie einfach, und wer interessiert ist, kann zuhören und reagieren.
Häufige Event-Muster
Hier sind einige häufige Muster, die du bei Events in C# sehen wirst:
Muster | Beschreibung | Beispiel |
---|---|---|
EventHandler | Standard-Event-Muster | public event EventHandler MyEvent; |
benutzerdefinierte EventArgs | Für das Übermitteln benutzerdefinierter Daten | public event EventHandler<CustomEventArgs> MyEvent; |
Event-Zugriff | Für die Steuerung des Event-Zugriffs | public event EventHandler MyEvent { add { ... } remove { ... } } |
Schlussfolgerung
Events in C# sind eine mächtige Möglichkeit, lose gekoppelte, responsive Anwendungen zu erstellen. Sie ermöglichen es Objekten, sich zu kommunizieren, ohne die Details der anderen zu kennen, ähnlich wie ein Radiosender für alle, die zuhören, sendet.
Denke daran, Übung macht den Meister! Versuche, deine eigenen Klassen mit Events zu erstellen und verschiedene Szenarien zu testen. Bevor du es weißt, wirst du ein Experte für Events sein und eine Symphonie von Objekten in deinen C#-Anwendungen orchestrieren!
Frohes Coden, zukünftige Programmierer! ??
Credits: Image by storyset