Lambda-Ausdrücke in C# 3.0

Monday, April 28, 2008 10:43:51 PM (W. Europe Daylight Time, UTC+02:00)

Ganz weit oben in der Liste meiner “Lieblingsfeatures” von C# stehen Lambda-Ausdrücke. Vereinfacht gesagt sind Lambda-Ausdrücke die Weiterentwicklung der Anonymen Methoden aus C# 2.0. Anonyme Methoden erlauben es, Code direkt an einen Delegate zuzuweisen. Beispiel:

In C# 1.0/1.1 muss man einem Delegate eine vorhandene Methode zuweisen:

   1: public void BeispielMethode()
   2: {
   3:     button1.Click += new EventHandler(button1_click);
   4: }
   5:  
   6: private void button1_Click(object sender, EventArgs e)
   7: {
   8:     MessageBox.Show("Button wurde geklickt!");
   9: }

In C# 2.0 ist es nicht mehr erforderlich, dem Delegate eine benannte Methode zuzuweisen. Stattdessen kann man ihm direkt eine anonyme Methode zuweisen, der Code verkürzt sich auf die folgenden Zeilen:

   1: public void BeispielMethode()
   2: {
   3:     button1.Click += delegate(object sender, EventArgs e)
   4:     {
   5:         MessageBox.Show("Button wurde geklickt!");
   6:     };
   7: }

Mit den Lambda-Ausdrücken aus C# 3.0 wird der Code erneut deutlich kürzer:

   1: button1.Click += 
   2:     (sender, e) => MessageBox.Show("Button wurde geklickt!");

Dem Click-Ereignis wird hier ein Lambda Ausdruck zugewiesen. Dieser besteht aus zwei Teilen: einer Parameterliste (links vom =>) und einem Ausdruck, auf den diese Parameter abgebildet werden (rechts vom =>).

Der Compiler erkennt hier automatisch, dass sender vom Typ object und e vom Typ EventArgs ist.

Da ich super müde bin und gleich einschlafe (habe den ganzen Tag einen 70-536 Prüfungsvorbereitungskurs unterrichtet) soll das erst mal genug sein zu dem Thema, wer mehr über Lambdas wissen möchte finden einen guten Artikel bei Scott Guthrie:

New "Orcas" Language Feature: Lambda Expressions

Technorati Tags: ,
Comments are closed.