Lambda-Ausdrücke

Aus Das Sopra Wiki
Wechseln zu: Navigation, Suche

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

3

Lamba-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)