Lambda-Ausdrücke in C#

March 21, 2012

Seit C# 3.0 ist es möglich sogenannte Lambda-Ausdrücke zu benutzen. Auf diese bin ich heute in einer Vorlesung gestoßen, habe jedoch nicht direkt verstanden, wie diese funktionieren. Deswegen möchte ich die Funktionsweise anhand von einfachen Beispielen erklären.
Lambda-Ausdrücke werden oft im Zusammenhang mit Delegates (Methodenverweisen) verwendet. Im folgenden Beispiel werden zwei Delegates erstellt und diese dann mit Hilfe von Lambda-Ausdrücken benutzt.

Zuerst zur allgemeinen Syntax eines Lambda-Ausdrucks:

(input parameters) => expression

Auf der linken Seiten stehen die Eingabeparameter, wobei die Klammer nur bei mehr als einem Parameter benötigt wird. Auf der rechten Seite der Ausdruck oder Ausdrucksblock. “=>” ist der Lambda-Operator (im Programmierer Fachjargon wird dieser auch einfach nur “Penis-Operator” genannt ;>) und dessen Funktionsweise kann man sich mit folgendem Merksatz einprägen: “Links wird zu Rechts”.

Nun zu den eigentlichen Beispielen…

**BEISPIEL 1**

Delegate erstellen (am besten außerhalb der Main-Methode)

delegate int addition(int a);

In der Main-Methode coden wir nun das:

/* working with the addition delegate */

//using a lambda expression
addition myAddition = new addition(x => x + x);
int erg = myAddition(3);

//output is "6" (3+3)
Console.WriteLine(erg);

Der Lambda-Ausdruck x => x + x sorgt dafür, dass unser Delegate als Eingabeparameter ein x enthält und dieses x innerhalb der Funktion zu x+x wird (“Links wird zu Rechts”). Nun rufen wir mit Hilfe des erstellten Delegates die Funktion mit dem Eingabewert “3” auf. Das Ergebnis ist logischerweise “6”.

**BEISPIEL 2**

Delegate erstellen (am besten außerhalb der Main-Methode)

delegate float average(float a, float b);

In der Main-Methode coden wir nun das:

/* working with the average delegate */

//using a lambda expression
average myAverage = new average((x, y) => (x + y) / 2);
float erg2 = myAverage(4, 1);

//output is "2,5" ((4+1)/2))
Console.WriteLine(erg2);

Der Lambda-Ausdruck (x, y) => (x + y) / 2 sorgt dafür, dass unser Delegate als Eingabeparameter ein x und y enthält und daraus der Durchschnitt beider Zahlen berechnet wird. Nun rufen wir mit Hilfe des erstellten Delegates die Funktion mit den Eingabewerten “4” und “1” auf. Das Ergebnis ist logischerweise “2,5”.

Back...