© StonePictures/Shutterstock.com
Unter dem Druck der Ereignisse - Teil 2

Events mit C#


Microsofts C#-Standard implementiert eine ganze Gruppe von Features, die Entwicklern die direkte Realisierung Event-getriebener Systeme ermöglichen. In diesem Artikel werden einige davon vorgestellt.

Die in der letzten Ausgabe durchgeführten und zugegebenermaßen etwas theoretischen Überlegungen zur Event-orientierten Programmierung haben gezeigt, dass man auf diese Art und Weise kompakte und leicht wartbare Softwareprojekte erzeugen kann. Außer Frage steht, dass es auch in der .NET-Welt viele Frameworks gibt, die durchaus attraktiv sind. Zunächst einmal sollten wir uns mit den schon im C#-Sprachstandard befindlichen Features auseinandersetzen.

Weit verbreitet

Methoden der eventorientierten Programmierung sind in C# mehr oder weniger seit der Stunde null dabei, schon Ted Faison stellte Diverses vor [1]. Aus diesem Grund ist man im Bereich der Zielsysteme flexibel und kann sich für einen Meadow F7 entscheiden. Im vorliegenden Beispiel wird mit Visual Studio 2019 gearbeitet. Als Demonstrationssystem soll eine auf .NET Core arbeitende Konsolenapplikation herangezogen werden. Ob der Kürze der Codebeispiele reicht es aus, eine Projektmappe zu erstellen und sie im Rest des Artikels wiederzuverwenden. Als erste Aufgabe wollen wir einen Delegaten realisieren – eine Abwandlung des aus C bekannten Funktions-Pointers. Die schon von Kerningham und Ritchie eingeführte Abstraktion [2] basiert auf dem Gedanken, dass eine Funktion über eine Adresse im Speicher repräsentierbar ist. Aktiviert man die Funktion über einen zur Laufzeit veränderbaren Pointer, so kann der Entwickler die Logik zur Laufzeit schnell bestimmen. Ein klassischer Anwendungsfall von Funktionsprojekten waren beispielsweise primitive Blitter in frühen Versionen von Windows, die zur Vermeidung der Abarbeitung einer Selektion pro Pixel die zu erledigende Aufgabe in Form eines dezidierten Funktions-Pointers bereitstellten. Die von Visual Studio generierten Projektskelette sind normalerweise klassische Static-Lösungen. In der Theorie ist man deshalb versucht, nach folgendem Schema einen neuen Delegaten anzulegen:

class Program { public static delegate void SayHello(String s);

Wir definieren hier eine Funktion namens sayHello, die einen Stringparameter entgegennimmt und einen void-Parameter zurücklegt. Das Angeben des Schlüsselworts delegate informiert über den Compiler darüber, dass es hier nicht um eine Funktionsdeklaration, sondern um das Erzeugen des C#-Äquivalents zum Pointer geht. Wer das Programm im vo...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang