Lambda-Ausdrücke
Aus Das Sopra Wiki
Eine Lambda-Funktion ist eine anonyme Funktion, die einer Funktion übergeben werden kann, die ein bestimmtes Delegate erwartet. Ein Aufruf von
List<int> list = new List<int>(); ... list.ForEach(i => Console.WriteLine(i.ToString());
Ist eine Kurzschreibweise für
List<int> list = new List<int>(); ... list.ForEach(delegate(int i){ Console.WriteLine(i.ToString()); });
Eine Lambdafunktion kann auch einen Wert zurückgeben. Angenommen, wir haben in unserem Programm folgende Variablen definiert
int a=1; int b=2;
und eine Funktion PrintResult
public static void PrintResult(Func<Int32, Int32, Int32> fun, int a, int b) { Console.WriteLine(fun(a, b).ToString()); }
Könnten wir diese Funtion folgendermaßen aufrufen
PrintResult((a, b) => a+b, 1, 2);
Alternativ sind auch folgende Aufrufe zulässig
// implizit getypt als Lambda-Funktion PrintResult((a, b) => { return a + b; }, 1, 2); // explizit getypt als Lambda-Funktion PrintResult((int a, int b) => { return a + b; }, 1, 2); // explizit getypt unter Verwendung einer anonymen Funktion PrintResult(delegate(int a, int b) { return a + b; }, 1, 2);
Das Ergebnis aller dieser Aufrufe wäre jeweils
3Lamba-Funktionen benutzen implizite Typung, das heißt der Compiler erkennt die Signatur der anonymen Methode. Diese kann dann z.B. von ForEach oder einer anderen Enumerable-Methode aufgerufen werden. Für genauere Details siehe Lambda Expressions (C# Programming Guide)
