- Autor

- Name
- Nelson Silva
- Social
Einführung
Der delegate ist eines der mächtigsten Features in C# und ermöglicht es Programmierern, Methoden auf dynamische und adaptive Weise zu verwalten. Er bringt nicht nur Flexibilität, sondern ist auch die Grundlage vieler fortgeschrittener Muster und Techniken in C#.
Eigenschaften des delegate
Unveränderlichkeit
Eines der ersten Dinge, die man über einen delegate bemerkt, ist seine Unveränderlichkeit. Wenn wir eine Methode mit einem delegate verknüpfen, modifizieren wir den bestehenden delegate nicht wirklich. Stattdessen erstellen wir einen neuen delegate, der die Methoden des ursprünglichen und des neuen kombiniert.
Multicast
Der delegate hat die Fähigkeit, mehrere Methodenreferenzen mit sich zu verknüpfen. Dies wird häufig als "Multicast"-Fähigkeit eines delegate bezeichnet. Dieses Feature ermöglicht es einem delegate, mehrere Methoden in einem einzigen Aufruf aufzurufen.
Kohäsion mit Ereignissen
In C# werden Ereignisse auf dem Konzept des delegate aufgebaut. Der delegate fungiert als Vermittler zwischen dem Ereignis und seinen Abonnenten und stellt sicher, dass der Vertrag zwischen ihnen eingehalten wird.
Vertiefter Einsatz des delegate
Beim tieferen Einstieg in C# wirst du Situationen finden, in denen der delegate äußerst nützlich sein kann:
- Algorithmusanpassung: Stell dir vor, du hast eine Methode, die Daten verarbeitet, aber die genaue Form der Verarbeitung muss variieren. Durch die Verwendung eines
delegatekannst du die spezifische Verarbeitungslogik als Parameter übergeben. - Callback: Bei asynchronen Operationen kann ein
delegateverwendet werden, um die Aktion festzulegen, die ausgeführt werden soll, wenn die Operation abgeschlossen ist. - Erweiterbarkeit: In großen und komplexen Anwendungen kann der
delegateverwendet werden, um es Teilen der Software zu ermöglichen, erweitert oder geändert zu werden, ohne den Kern des Programms zu verändern.
Anwendungsbeispiel:
using System;
namespace Base {
class Delegate {
private delegate void MethodenSatz(string name);
public void Run() {
Console.Write("Geben Sie Ihren Vor- und Nachnamen ein: ");
var name = Console.ReadLine();
var methodenSatz = new MethodenSatz(NameAusgeben);
methodenSatz += NameInGrossbuchtstabenAusgeben;
methodenSatz += NameInKleinbuchstabenAusgeben;
methodenSatz(name);
}
public void NameAusgeben(string name) {
Console.WriteLine($"Name: {name}");
}
public void NameInGrossbuchtstabenAusgeben(string name) {
Console.WriteLine($"Name in Großbuchstaben: {name.ToUpper()}");
}
public void NameInKleinbuchstabenAusgeben(string name) {
Console.WriteLine($"Name in Kleinbuchstaben: {name.ToLower()}");
}
}
}
Dieser Code ist ein Beispiel dafür, wie man die "Multicast"-Fähigkeit eines delegate nutzt und mehrere Methoden nacheinander aufruft.
Fazit
Den delegate in seiner Gesamtheit zu verstehen ist für jeden C#-Programmierer grundlegend. Er verstärkt nicht nur die Fähigkeit des Codes, dynamisch zu reagieren, sondern ist auch die Grundlage vieler fortgeschrittener Muster in C#.