C# Anonyme Methoden: Vereinfachung der Delegate-Nutzung
Was sind anonyme Methoden?
Wir haben besprochen, dass Delegates verwendet werden, um Methoden zu referenzieren, die dieselbe Signatur wie der Delegate haben. Mit anderen Worten: Sie können eine Methode, die von einem Delegate referenziert werden kann, mithilfe dieses Delegate-Objekts aufrufen.
Anonyme Methoden bieten eine Technik, um einen Codeblock als Delegate-Parameter zu übergeben. Anonyme Methoden sind Methoden ohne Namen – sie bestehen nur aus dem Rumpf.
Sie müssen den Rückgabetyp in einer anonymen Methode nicht angeben; er wird aus der return-Anweisung im Methodenrumpf abgeleitet.
Schreiben einer anonymen Methode
Anonyme Methoden werden bei der Erstellung der Delegate-Instanz mit dem Schlüsselwort delegate deklariert. Zum Beispiel:
delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x) {
Console.WriteLine("Anonymous Method: {0}", x);
};
Der Codeblock Console.WriteLine("Anonymous Method: {0}", x); ist der Rumpf der anonymen Methode.
Der Delegate kann sowohl mit anonymen als auch mit benannten Methoden auf die gleiche Weise aufgerufen werden – indem die Methodenparameter an das Delegate-Objekt übergeben werden.
Beispiel:
nc(10);
Beispiel
Das folgende Beispiel demonstriert das Konzept:
using System;
delegate void NumberChanger(int n);
namespace DelegateAppl {
class TestDelegate {
static int num = 10;
public static void AddNum(int p) {
num += p;
Console.WriteLine("Named Method: {0}", num);
}
public static void MultNum(int q) {
num *= q;
Console.WriteLine("Named Method: {0}", num);
}
public static int getNum() {
return num;
}
static void Main(string[] args) {
// Delegate-Instanzen mit anonymer Methode erstellen
NumberChanger nc = delegate(int x) {
Console.WriteLine("Anonymous Method: {0}", x);
};
// Delegate mit anonymer Methode aufrufen
nc(10);
// Delegate mit benannter Methode instanziieren
nc = new NumberChanger(AddNum);
// Delegate mit benannter Methode aufrufen
nc(5);
// Delegate mit einer anderen benannten Methode instanziieren
nc = new NumberChanger(MultNum);
// Delegate mit benannter Methode aufrufen
nc(2);
Console.ReadKey();
}
}
}
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er folgendes Ergebnis:
Anonymous Method: 10 Named Method: 15 Named Method: 30
C Sprache
- C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
- C# Partielle Klassen und Methoden verstehen
- Versiegelte Klassen und Methoden in C# meistern
- Methodenüberladung in C# meistern: Konzepte, Beispiele und Best Practices
- Python Lambda-Funktionen: Praxisleitfaden zu anonymen Funktionen
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java 8 Default Methods: Interfaces mit Implementierung & Backward Compatibility
- C# Methoden: Definieren, Aufrufen, Rekursion & Parameterübergabe
- C# Delegates verstehen: Ein Leitfaden zu Funktionsreferenzen und Events
- EPA Method 21: Umfassendes Lecksuch- & Reparaturprotokoll