C# Events: Behandlung von Benutzeraktionen und Systembenachrichtigungen
Was sind Events in C#?
Events sind Benutzeraktionen wie Tastendruck, Klicks, Mausbewegungen usw. oder bestimmte Vorkommnisse wie systemgenerierte Benachrichtigungen. Anwendungen müssen auf Events reagieren, wenn diese auftreten – beispielsweise bei Interrupts. Events werden für die Kommunikation zwischen Prozessen verwendet.
Verwendung von Delegates mit Events
Events werden in einer Klasse deklariert und ausgelöst und mithilfe von Delegates mit Event-Handlern verknüpft – entweder innerhalb derselben Klasse oder einer anderen Klasse. Die Klasse, die das Event enthält, wird verwendet, um das Event zu veröffentlichen. Dies nennt man die Publisher-Klasse. Eine andere Klasse, die dieses Event akzeptiert, wird als Subscriber-Klasse bezeichnet. Events folgen dem Publisher-Subscriber-Modell.
Ein Publisher ist ein Objekt, das die Definition des Events und des Delegates enthält. Die Event-Delegate-Verknüpfung wird ebenfalls in diesem Objekt definiert. Ein Publisher-Klassenobjekt löst das Event aus, woraufhin andere Objekte benachrichtigt werden.
Ein Subscriber ist ein Objekt, das das Event akzeptiert und einen Event-Handler bereitstellt. Der Delegate in der Publisher-Klasse ruft die Methode (den Event-Handler) der Subscriber-Klasse auf.
Deklaration von Events
Um ein Event innerhalb einer Klasse zu deklarieren, müssen Sie zunächst einen Delegate-Typ für das Event deklarieren:
public delegate string BoilerLogHandler(string str);
Anschließend deklarieren Sie das Event mithilfe des event-Schlüsselworts:
event BoilerLogHandler BoilerEventLog;
Der obige Code definiert einen Delegate namens BoilerLogHandler und ein Event namens BoilerEventLog, das den Delegate aufruft, wenn es ausgelöst wird.
Beispiel
using System;
namespace SampleApp {
public delegate string MyDel(string str);
class EventProgram {
event MyDel MyEvent;
public EventProgram() {
this.MyEvent += new MyDel(this.WelcomeUser);
}
public string WelcomeUser(string username) {
return "Welcome " + username;
}
static void Main(string[] args) {
EventProgram obj1 = new EventProgram();
string result = obj1.MyEvent("Tutorials Point");
Console.WriteLine(result);
}
}
}
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er folgendes Ergebnis:
Welcome Tutorials Point
C Sprache
- C# Klassen & Objekte: Fundamente für robustes OOP
- C# Zugriffsmodifizierer verstehen: Public, Private, Protected, Internal und mehr
- C# Static Keyword: Statische Variablen, Methoden und Klassen meistern
- C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
- C# Geschachtelte Klassen verstehen: Definition, Verwendung und Vererbung
- C# Partielle Klassen und Methoden verstehen
- Versiegelte Klassen und Methoden in C# meistern
- Polymorphie in C++: Praktischer Leitfaden
- Datenabstraktion in C++: Interface-Implementierung-Trennung
- Datenkapselung in C++: Code schützen & strukturieren