Zum Hauptinhalt springen
Veröffentlicht am

Lambda in C#

Teilen:

Einführung

Lambda-Ausdrücke sind zu einem unverzichtbaren Werkzeug für C#-Entwickler geworden. Sie bieten eine prägnante Schreibweise, Flexibilität und die Fähigkeit, Funktionen on-the-fly zu erstellen.

Ursprünge der Lambda-Ausdrücke

Lambda-Funktionen stammen aus dem Lambda-Kalkül, einem formalen Rahmen in der Berechenbarkeitstheorie, und sind heute ein zentraler Bestandteil vieler moderner Programmiersprachen. C# hat diese Funktionalität übernommen und ermöglicht es Entwicklern, die Vorteile anonymer Funktionen zu nutzen.

Lambda-Syntax in C#

Der Lambda-Ausdruck in C# verwendet den Operator =>. Auf der linken Seite dieses Operators werden die Parameter angegeben und auf der rechten Seite der Ausdruck oder der Codeblock.

(param1, param2) => param1 * param2;
using System;
using System.Linq;

namespace Base {
  class Lambda {
    private int[] zahlen = new int[] {
      1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
    };

    public void Run() {
      Console.WriteLine($"Gesamte gerade Zahlen: {zahlen.Count(zahl => zahl % 2 == 0)}");
      Console.WriteLine($"Gesamte ungerade Zahlen: {zahlen.Count(zahl => zahl % 2 != 0)}");
    }

    private int GeradeZahlenZaehlen() {
      var zaehler = 0;

      foreach (var zahl in zahlen) {
        if (zahl % 2 == 0)
          zaehler++;
      }

      return zaehler;
    }

    private int UngeradeZahlenZaehlen() {
      var zaehler = 0;

      foreach (var zahl in zahlen) {
        if (zahl % 2 != 0)
          zaehler++;
      }

      return zaehler;
    }
  }
}

Vorteile der Verwendung von Lambda in C#

  1. Prägnanz: Reduziert die Notwendigkeit, vollständige Methoden zu schreiben, und macht den Code übersichtlicher.
  2. Flexibilität: Lassen sich leicht als Argumente übergeben oder als Werte zurückgeben.
  3. Verbesserte Lesbarkeit: Der Code wird ausdrucksstärker und lesbarer.

Beziehung zu Delegates, Func und Action

  • Delegates: Sind Referenztypen, die auf jede Methode mit demselben Satz von Parametern und Rückgabetyp verweisen können. Lambda-Ausdrücke werden häufig mit Delegates assoziiert.
  • Func: Ist ein Delegate, das null oder mehr Parameter haben kann und einen Wert zurückgibt. Die letzte Typangabe ist immer der Rückgabetyp.
  • Action: Ähnlich wie Func, gibt jedoch keinen Wert zurück (void).

LINQ und Lambda-Ausdrücke

LINQ (Language-Integrated Query) ist ein Satz von Methodenerweiterungen, der die Ausführung komplexer Abfragen auf Kollektionen ermöglicht. LINQ verwendet Lambda-Ausdrücke umfangreich und macht das Abfragen von Daten in Kollektionen, Datenbanken und XML wesentlich einfacher und intuitiver.

var geradeZahlen = zahlen.Where(zahl => zahl % 2 == 0);

Häufige Anwendungsfälle

  • Manipulation von Kollektionen: Kollektionen filtern, sortieren und transformieren.
  • Ereignisse und Delegates: Anonyme Methoden durch Lambda-Ausdrücke ersetzen.
  • Asynchronous Programming: Lambda-Ausdrücke mit Task.Run() oder async und await verwenden.

Fazit

Die Möglichkeit, Lambda-Ausdrücke in C# zu verwenden, erlaubt es Entwicklern, saubereren, effizienteren und ausdrucksstärkeren Code zu schreiben. Wer Ursprung, Syntax und Vorteile versteht, kann diese mächtige Funktion wirklich in vollem Umfang nutzen.

Happy coding!