Search
Close this search box.
Ein C# Delegatensymbol auf weißem Hintergrund

Einführung in C# Delegaten: Was sind Delegaten und wie werden sie verwendet?

In C# gibt es eine Funktion namens „Delegaten“, die es ermöglicht, Methoden als Parameter an andere Methoden zu übergeben. Dadurch wird es einfacher, Code zu schreiben, der flexibel und wiederverwendbar ist. In diesem Artikel werden wir uns genauer mit dem Konzept der Delegaten in C# befassen, wie sie verwendet werden und welche Vorteile sie bieten.

Ein Delegat ist eine Art von Verweis auf eine Methode. Er ermöglicht es einer Methode, eine andere Methode aufzurufen, ohne deren Namen zu kennen. Ein Delegat kann als Parameter an eine Methode übergeben werden, und die Methode kann ihn verwenden, um die aufgerufene Methode auszuführen. Ein Delegat kann auch dazu verwendet werden, eine Liste von Methoden zu speichern und auf sie zuzugreifen.

Delegaten sind besonders nützlich, wenn Sie einen Code schreiben, der flexibel und wiederverwendbar sein soll. Zum Beispiel können Sie einen Delegaten verwenden, um eine Methode an eine andere Methode zu übergeben, die sie aufrufen soll. Dadurch können Sie eine Methode schreiben, die für verschiedene Anwendungen verwendet werden kann, da Sie ihr eine andere Methode als Parameter übergeben können, um sie an unterschiedliche Bedürfnisse anzupassen.

Ein weiterer Vorteil von Delegaten ist, dass sie es einfacher machen, asynchrone Programme zu schreiben. In C# können Sie einen Delegaten verwenden, um einen asynchronen Aufruf einer Methode zu starten. Dadurch kann die Methode in einem separaten Thread ausgeführt werden, ohne dass der Hauptthread blockiert wird. Das macht es einfacher, Programme zu schreiben, die auf Benutzereingaben oder andere Ereignisse reagieren müssen, ohne dass der Benutzer auf eine Antwort warten muss.

Beispiel 1: Erstellen eines einfachen Delegaten

Schritt 1: Definiere den Delegatentyp mit der Signatur der Methode, die der Delegat kapseln soll.

				
					delegate void MeinDelegat(string text);

				
			

Schritt 2: Definiere die Methode, die dem Delegaten entspricht.

				
					void MeineMethode(string text)
{
   Console.WriteLine(text);
}

				
			

Schritt 3: Erstelle eine Instanz des Delegaten und weise ihm die Methode zu.

				
					MeinDelegat delegat = new MeinDelegat(MeineMethode);

				
			

Schritt 4: Rufe die Methode über den Delegaten auf.

				
					delegat("Hallo Welt!");

				
			
  1. Beispiel: Verketten von Delegaten

Schritt 1: Definiere den Delegatentyp mit der Signatur der Methode, die der Delegat kapseln soll.

				
					delegate void MeinDelegat(string text);

				
			

Schritt 2: Definiere die Methoden, die dem Delegaten entsprechen.

				
					void MeineMethode1(string text)
{
   Console.WriteLine(text + " aus Methode 1");
}

void MeineMethode2(string text)
{
   Console.WriteLine(text + " aus Methode 2");
}

				
			

Schritt 3: Erstelle eine Instanz des Delegaten und füge ihm die Methoden hinzu.

				
					MeinDelegat delegat = new MeinDelegat(MeineMethode1);
delegat += MeineMethode2;

				
			

Schritt 4: Rufe die Methode über den Delegaten auf.

				
					delegat("Hallo Welt!");

				
			
  1. Beispiel: Entfernen von Delegaten

Schritt 1: Definiere den Delegatentyp mit der Signatur der Methode, die der Delegat kapseln soll.

				
					delegate void MeinDelegat(string text);

				
			

Schritt 2: Definiere die Methoden, die dem Delegaten entsprechen.

				
					void MeineMethode1(string text)
{
   Console.WriteLine(text + " aus Methode 1");
}

void MeineMethode2(string text)
{
   Console.WriteLine(text + " aus Methode 2");
}

				
			

Schritt 3: Erstelle eine Instanz des Delegaten und füge ihm die Methoden hinzu.

				
					MeinDelegat delegat = new MeinDelegat(MeineMethode1);
delegat += MeineMethode2;

				
			

Schritt 4: Entferne eine Methode aus dem Delegaten.

				
					delegat -= MeineMethode1;

				
			

Schritt 5: Rufe die Methode über den Delegaten auf.

				
					delegat("Hallo Welt!");

				
			

Hier ist eine weitere Anleitung zum Mitmachen mit einigen Beispielen:

Beispiel:

Ein Delegat kann verwendet werden, um eine Methode als Parameter an eine andere Methode zu übergeben. Dadurch können Sie die Flexibilität der Programmierung erhöhen und Ihre Codebasis effizienter gestalten. Hier ist ein Beispiel dafür, wie Sie einen Delegaten verwenden können, um eine Methode als Parameter zu übergeben:

				
					public delegate void MyDelegate(string message);

public class MyClass
{
    public void MyMethod(string message)
    {
        Console.WriteLine(message);
    }
}

public class Program
{
    static void Main(string[] args)
    {
        MyClass obj = new MyClass();
        MyDelegate del = new MyDelegate(obj.MyMethod);
        del("Hello World");
    }
}

				
			

In diesem Beispiel haben wir einen Delegaten namens „MyDelegate“ definiert, der eine Methode akzeptiert, die einen Parameter vom Typ „string“ entgegennimmt und keinen Rückgabewert hat. Dann haben wir eine Klasse „MyClass“ definiert, die eine Methode namens „MyMethod“ enthält, die denselben Signaturtyp hat wie der Delegat. Schließlich haben wir in der „Main“ Methode des Programms eine Instanz von „MyClass“ erstellt, einen Delegaten mit der Methode „MyMethod“ der Klasse initialisiert und die Methode über den Delegaten aufgerufen.

Beispiel:

Ein weiteres Beispiel für die Verwendung von Delegaten besteht darin, dass Sie sie verwenden können, um mehrere Methoden mit demselben Signaturtyp aufzurufen. Hier ist ein Beispiel dafür, wie Sie einen Delegaten verwenden können, um eine Methode aufzurufen, die eine bestimmte Aktion ausführt, basierend auf den Rückgabewerten mehrerer anderer Methoden:

				
					public delegate int Calculate(int x, int y);

public class Program
{
    static void Main(string[] args)
    {
        Calculate add = (x, y) => x + y;
        Calculate subtract = (x, y) => x - y;
        Calculate multiply = (x, y) => x * y;

        Console.WriteLine("Addition: " + add(10, 5));
        Console.WriteLine("Subtraction: " + subtract(10, 5));
        Console.WriteLine("Multiplication: " + multiply(10, 5));
    }
}

				
			

In diesem Beispiel haben wir einen Delegaten „Calculate“ definiert, der zwei Parameter vom Typ „int“ akzeptiert und einen Rückgabewert vom Typ „int“ hat. Dann haben wir drei Methoden definiert, die denselben Signaturtyp wie der Delegat haben und verschiedene Berechnungen ausführen. Schließlich haben wir in der „Main“ Methode des Programms drei Instanzen des Delegaten erstellt und die Methoden aufgerufen, indem wir die Instanz des Delegaten verwenden.

Fazit: Delegaten sind eine mächtige Funktion in C#, die es ermöglicht, flexiblen und wiederverwendbaren Code zu schreiben. Indem sie Methoden als Parameter an andere Methoden übergeben, machen sie es einfacher, Code zu schreiben, der an verschiedene Bedürfnisse angepasst werden kann. Sie sind auch besonders nützlich, wenn Sie asynchrone Programme schreiben möchten. Wenn Sie also in C# programmieren, sollten Sie sich mit Delegaten vertraut machen und lernen, wie Sie sie verwenden können, um Ihren Code zu verbessern.

Zurück zum vorherigen Teil des C# Kurses
Klicken Sie auf den Pfeil, um zum vorherigen Teil des Kurses zurückzukehren
Pfeil-Button zum nächsten Teil des Kurses
Klicken Sie auf den Pfeil, um zum nächsten Teil des Kurses zu gelangen