Verwendung von Lambda-Ausdrücken in C #

Lambda-Ausdrücke wurden erstmals in .NET 3.5 eingeführt, gleichzeitig mit der Bereitstellung von Language Integrated Query (LINQ). Lambda-Ausdrücke sind wie anonyme Methoden, jedoch mit viel mehr Flexibilität. Wenn Sie einen Lambda-Ausdruck verwenden, müssen Sie den Typ der Eingabe nicht angeben. Daher bietet ein Lambda-Ausdruck eine kürzere und sauberere Möglichkeit, anonyme Methoden darzustellen.

In diesem Artikel sehen wir uns an, wie wir Lambda-Ausdrücke in C # verwenden können. Um mit den in diesem Artikel bereitgestellten Codebeispielen arbeiten zu können, muss Visual Studio 2019 auf Ihrem System installiert sein. Wenn Sie noch keine Kopie haben, können Sie Visual Studio 2019 hier herunterladen. 

Erstellen Sie ein Konsolenanwendungsprojekt in Visual Studio

Zunächst erstellen wir ein .NET Core-Konsolenanwendungsprojekt in Visual Studio. Angenommen, Visual Studio 2019 ist auf Ihrem System installiert, führen Sie die folgenden Schritte aus, um ein neues .NET Core-Konsolenanwendungsprojekt in Visual Studio zu erstellen.

  1. Starten Sie die Visual Studio-IDE.
  2. Klicken Sie auf "Neues Projekt erstellen".
  3. Wählen Sie im Fenster "Neues Projekt erstellen" aus der Liste der angezeigten Vorlagen "Konsolen-App (.NET Core)" aus.
  4. Weiter klicken. 
  5. Geben Sie im nächsten Fenster "Konfigurieren Sie Ihr neues Projekt" den Namen und den Speicherort für das neue Projekt an.
  6. Klicken Sie auf Erstellen.

Das Befolgen dieser Schritte sollte zu einem neuen .NET Core-Konsolenanwendungsprojekt in Visual Studio 2019 führen. In den folgenden Abschnitten dieses Artikels werden wir dieses Projekt verwenden, um mit C # -Lambda-Ausdrücken zu arbeiten.

Anatomie eines Lambda-Ausdrucks

Im Wesentlichen ist ein Lambda-Ausdruck eine Methode ohne Deklaration. Mit anderen Worten, ein Lambda-Ausdruck ist eine Methode, die weder einen Zugriffsspezifizierer noch einen Namen hat. Ein Lambda-Ausdruck kann in zwei Abschnitte unterteilt werden - den linken und den rechten Teil. Der linke Teil wird für die Eingabe verwendet, und der rechte Teil wird zum Schreiben von Ausdrücken verwendet.

Hier ist die Syntax für die Verwendung von Lambda-Ausdrücken in C #.

(Eingabeparameter) => Ausdruck oder Anweisungsblock

Sie können zwei Arten von Lambda-Ausdrücken verwenden, einen Ausdruck Lambda und eine Anweisung Lambda. Ein Ausdruck Lambda besteht aus einer Eingabe auf der linken Seite und einem Ausdruck auf der rechten Seite, wie unten gezeigt.

Eingabe => Ausdruck;

Ein Anweisungs-Lambda besteht aus einer Eingabe auf der linken Seite und einer Reihe von Anweisungen auf der rechten Seite, wie unten gezeigt.

Eingabe => {Anweisungen};

Beispiele für Lambda-Ausdrücke in C #

Das Schreiben eines Lambda-Ausdrucks ist einfach - Sie müssen nur das Delegate-Schlüsselwort und den Parametertyp aus einer anonymen Methode entfernen. Betrachten Sie die folgende anonyme Methode, die das Schlüsselwort delegate sowie einen Parametertyp verwendet.

delegieren (Autor a) {return a.IsActive && a.NoOfBooksAuthored> 10; }}

Die obige Anweisung kann in einen Lambda-Ausdruck konvertiert werden, wie im unten angegebenen Code-Snippet gezeigt.

(a) => {a.IsActive && a.NoOfBooksAuthored> 10; }}

In der obigen Anweisung aist der Parameter und =>der Lambda-Operator. Die folgende Anweisung ist der Ausdruck.

a.IsActive && a.NoOfBooksAuthored> 10;

Hier ist ein weiteres Beispiel für einen Lambda-Ausdruck, der die ungeraden Zahlen zwischen 1 und 9 im Konsolenfenster anzeigt.

List integers = new List {1, 2, 3, 4, 5, 6, 7, 8, 9};

foreach (int num in integers.Where (n => n% 2 == 1) .ToList ())

{

  Console.WriteLine (num);

}}

Lambda-Ausdrücke mit und ohne Parameter

Lambda-Ausdrücke können parameterlos sein oder einen oder mehrere Parameter haben. Das folgende Codeausschnitt zeigt einen Lambda-Ausdruck ohne Parameter.

() => Console.WriteLine ("Dies ist ein Lambda-Ausdruck ohne Parameter");

Lambda-Ausdrücke können auch einen oder mehrere Parameter haben. Das folgende Codefragment zeigt, wie Sie einen Parameter an einen Lambda-Ausdruck übergeben können.

(a, numberOfBooksAuthored) => a.NoOfBooksAuthored> = numberOfBooksAuthored;

Sie können den Typ des Parameters auch in einem Lambda-Ausdruck angeben, wie im folgenden Codeausschnitt gezeigt.

(a, int numberOfBooksAuthored) => a.NoOfBooksAuthored> = numberOfBooksAuthored;

Sie können sogar mehrere Anweisungen in einem Lambda-Ausdruck mit geschweiften Klammern angeben. Dies wird im folgenden Codeausschnitt gezeigt. 

(a, 10) =>

{

   Console.WriteLine ("Dies ist ein Beispiel für einen Lambda-Ausdruck

                      mit mehreren Aussagen ");

   return a.NoOfBooksAuthored> = 10;

}}

Aussage Lambdas in C #

Eine Anweisung Lambda verwendet eine Syntax, die mit dem Ausdruck Lambdas identisch ist. Der Unterschied besteht darin, dass die Anweisung Lambda anstelle eines Ausdrucks rechts vom Operator einen Codeblock enthält, der eine oder mehrere Anweisungen enthält.

Das folgende Codeausschnitt zeigt, wie Sie eine Anweisung Lambda nutzen können, um die geraden Zahlen zwischen 1 und 9 im Konsolenfenster anzuzeigen.

int [] Ganzzahlen = neu [] {1, 2, 3, 4, 5, 6, 7, 8, 9};

foreach (int i in ganzen Zahlen. Wo (x =>

{

   if (x% 2 == 0)

         return true;

    falsch zurückgeben;

 }}

 ))

Console.WriteLine (i);

Lambda-Ausdrücke sind eine großartige Funktion in .NET und .NET Core, mit der anonyme Methoden kürzer dargestellt werden können. Lambda-Ausdrücke können null oder einen oder mehrere Parameter haben. Sie können Func-, Action- oder Predicate-Delegaten sogar Lambda-Ausdrücke zuweisen. In einem zukünftigen Artikel hier werden wir diese und andere Merkmale von Lambda-Ausdrücken untersuchen. Wir werden auch untersuchen, wie wir mit Lambda-Ausdrücken und LINQ sowie asynchronen Lambdas arbeiten können.

So machen Sie mehr in C #:

  • Wann wird eine abstrakte Klasse im Vergleich zur Schnittstelle in C # verwendet?
  • So arbeiten Sie mit AutoMapper in C #
  • Verwendung von Lambda-Ausdrücken in C #
  • So arbeiten Sie mit Action-, Func- und Predicate-Delegaten in C #
  • So arbeiten Sie mit Delegierten in C #
  • So implementieren Sie einen einfachen Logger in C #
  • So arbeiten Sie mit Attributen in C #
  • So arbeiten Sie mit log4net in C #
  • So implementieren Sie das Repository-Entwurfsmuster in C #
  • Wie man mit Reflexion in C # arbeitet
  • So arbeiten Sie mit dem Dateisystemwatcher in C #
  • So führen Sie eine verzögerte Initialisierung in C # durch
  • So arbeiten Sie mit MSMQ in C #
  • So arbeiten Sie mit Erweiterungsmethoden in C #
  • Wie wir Lambda-Ausdrücke in C #
  • Wann wird das flüchtige Schlüsselwort in C # verwendet?
  • Verwendung des Schlüsselwortsield in C #
  • So implementieren Sie Polymorphismus in C #
  • So erstellen Sie Ihren eigenen Taskplaner in C #
  • So arbeiten Sie mit RabbitMQ in C #
  • So arbeiten Sie mit einem Tupel in C #
  • Erkundung virtueller und abstrakter Methoden in C #