delegate void MethodSpeicher(string x); public static void Main(string[] args) { MethodSpeicher bsp = A.Methode1; // 1. nicht anonyme Methodenzuweisung bsp += delegate(string t) { Console.WriteLine($"{t} ich bin eine anonyme Methode"); }; //Anonyme Methode bsp += x => Console.WriteLine($"{x}ich bin ein Lamda ausdruck "); // Lambda Ausdruck bsp += A.Methode2; // nicht anonyme Methodenzuweisung bsp(" hallo "); // hier übergebe ich den im delegate gespeicherten Methoden den string parameter } class A // klasse mit Methode die einen string verdoppelt { public static void Methode1(string x) { Console.WriteLine($"{x} bin TEst methode"); } public static void Methode2(string y) { Console.WriteLine($" {y} beta "); } } <Ausgabe: es werden alle Methoden ausgegeben ABER achtung: bei Methoden die etwas returnen wird nur der wert der zuletzt aufgerufenen Methode returnt"> > hallo bin TEst methode hallo ich bin eine anonyme Methode hallo ich bin ein Lamda ausdruck hallo beta Generisches Delegate: delegate T MyDel<T> (T x, T y); <instanzieren>: MyDel<int> w = (x,y) => x+y;