- Autor

- Name
- Nelson Silva
- Social
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-Syntax in C#
- Vorteile der Verwendung von Lambda in C#
- Beziehung zu Delegates, Func und Action
- LINQ und Lambda-Ausdrücke
- Häufige Anwendungsfälle
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#
- Prägnanz: Reduziert die Notwendigkeit, vollständige Methoden zu schreiben, und macht den Code übersichtlicher.
- Flexibilität: Lassen sich leicht als Argumente übergeben oder als Werte zurückgeben.
- 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()oderasyncundawaitverwenden.
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.