Warum funktioniert so ein Hype mit C # Lambda? [Duplikat]

8

Ich fange an, in C # 2.0 zu programmieren, also habe ich nie Lambda-Ausdrücke benutzt, aber warum so viel Aufhebens darum? Sind sie nur syntaktischer Zucker um anonyme Delegierte, oder gibt es etwas mehr, was ich nicht sehen kann?

    
raven 20.07.2009, 17:23
quelle

4 Antworten

26

Nun, Lambda-Ausdrücke haben zwei Haupteigenschaften gegenüber anonymen Methoden:

  • Sie sind prägnanter als anonyme Methoden
  • Sie können in Ausdrucksbäume sowie in Delegaten
  • konvertiert werden

Sofern Sie keine Ausdrucksbäume verwenden, sind sie den anonymen Methoden sehr ähnlich. Der Unterschied besteht darin, dass Sie oft mehrere Lambda-Ausdrücke in einer Anweisung schreiben können (Verkettung von Methodenaufrufen), ohne die Lesbarkeit zu verlieren, aber anonyme Methoden sind nur ein bisschen zu wortwörtlich.

Übrigens ist es nicht so sehr, dass Lambda-Ausdrücke "einfach syntaktischer Zucker um anonyme Delegierte" sind, da sowohl Lambda-Ausdrücke als auch anonyme Methoden "nur syntaktische Suggestion sind, um Delegaten (und Ausdrucksbäume) zu erzeugen."

Vermeiden Sie syntaktischen Zucker jedoch nicht - die Vorteile von anonymen Funktionen, die als Verschlüsse fungieren, sind enorm, zusammen mit der Fähigkeit, den Code genau dort zu haben, wo Sie ihn haben wollen, anstatt in einer separaten Methode.

    
Jon Skeet 20.07.2009, 17:25
quelle
14

Sie können einfach als Syntaxzucker für einen Delegaten verwendet werden, aber das große an Lambdas ist, dass der Compiler die Fähigkeit hat, sie in Ausdrucksbäume , die viele Möglichkeiten eröffnen (nicht zuletzt LINQ).

    
Andrew Hare 20.07.2009 17:25
quelle
4

Eine sehr knappe Syntax macht es wahrscheinlicher, dass mehr Dinge um sie herum gebaut werden. Stellen Sie sich eine komplexe Linq-Abfrage ohne jegliche Art von syntaktischem Zucker vor.

    
Lou Franco 20.07.2009 17:25
quelle
4
  

Sind sie nur syntaktischer Zucker in der Nähe?   anonyme Delegierte, oder ist da   etwas mehr, was ich nicht sehen kann?

Gute Frage. Die Antwort ist kompliziert. Zuallererst sind offensichtlich die Ausdrucksbäume die Großen. Aber es gibt auch einige Feinheiten. Hier sind meine fünf ausführlichen und oft abschweifenden Artikel zum Thema, wie sich Lambdas subtil von anonymen Methoden unterscheiden:

Ссылка

Ссылка

Ссылка

Ссылка

Ссылка

Alle meine Artikel über Probleme mit Lambda-Ausdrücken sind hier archiviert:

Ссылка

    
Eric Lippert 20.07.2009 20:08
quelle

Tags und Links