Delegates mit .NET

Statisch oder nicht ist gleichgültig

Dabei gibt es zwei Möglichkeiten: Bei der Funktion mit der Delegate-Signatur kann es sich um eine statische Methode einer Klasse handeln oder man verwendet eine ganz normale Member-Funktion. Im Fall einer statischen Funktion sieht das Ganze dann so aus:

public class LogHelper {
public static void LogToConsole( string s) {
Console.WriteLine( s);
}

public LogHelper() {
}
}

class Worker {
public static void Main() {
AClass a = new AClass();
AClass.Logger log = new AClass.Logger( LogHelper.LogToConsole);
a.DoIt( log);

}
}

Zunächst gibt es also eine statische Methode LogToConsole in der Klasse LogHelper. Die Methode kann sich natürlich auch in einer beliebigen anderen Klasse befinden. Die Methode hat die gleiche Signatur wie der Delegate aus AClass.

Ferner gibt es eine Klasse namens Worker. Main erzeugt darin zunächst eine Instanz von AClass und dann eine neue Instanz des Logger-Delegates. Dabei wird die Funktion aus LogHelper übergeben - der Delegate zeigt somit auf diese Methode. Schließlich kann DoIt aufgerufen werden.