8
votes

Pourquoi un tel battage médiatique avec C # Lambda fonctionne-t-il?

Je commence à programmer au C # 2.0, donc je n'ai jamais utilisé les expressions de Lambda, mais pourquoi tellement de fusses à ce sujet? Sont-ils juste du sucre syntaxique autour des délégués anonymes, ou y a-t-il quelque chose de plus que je ne peux pas voir?


3 commentaires

La nouveauté est sa propre récompense: arstechnica.com/old/content/2008/06/...


Oui, c'est un duplicata, "Quel est le but de Lambdas" a été demandé à une période de zillion. Mais je ne pense pas que les gens semblent prendre l'idée de doublons du tout sérieusement.


Oui, c'est un duplicata, "Quel est le but de Lambdas" a été demandé à une période de zillion. Mais je ne pense pas que les gens semblent prendre l'idée de doublons du tout sérieusement.


4 Réponses :


14
votes

Ils peuvent facilement être utilisés comme juste syntaxe sucre autour d'un délégué, mais la grande chose à propos de Lambdas est que le compilateur a la capacité de les transformer en Arbres d'expression qui ouvrent de nombreuses possibilités (non le moindre qui étant LINQ). < / p>


2 commentaires

Bien que ce soit la grande chose en termes de Linq à SQL, et j'utilise personnellement le fait qu'ils sont plus souvent plus souvent que j'utilise des arbres d'expression ...


Moi aussi - mais je pense que sans expression arbres et Linq, l'équipe C # aurait été moins encline à ajouter des expressions de Lambda à la langue de la thermophone seule :)



4
votes

Avoir une syntaxe très terrese le rend plus probable que plus de choses seront construites autour d'eux. Imaginez une requête de Linq complexe sans aucune sorte de sucre syntaxique.


1 commentaires

Je crains de ne pas faire de Linq. Je suis coincé dans C # 2.0 pour l'instant, donc je ne peux pas imaginer ça. Merci quand même.



26
votes

Eh bien, les expressions Lambda ont deux éléments principaux sur les méthodes anonymes:

  • Ils sont plus concis que les méthodes anonymes
  • Ils peuvent être convertis en Arbres d'expression ainsi que les délégués < / li>

    Sauf si vous utilisez des arbres d'expression, ils sont extrêmement similaires aux méthodes anonymes. La différence est que vous pouvez souvent écrire plusieurs expressions Lambda dans une déclaration (procédé de chaînage des appels ensemble) sans perdre de la lisibilité, mais les méthodes anonymes sont un peu trop verbeuses.

    Au fait, ce n'est pas tellement que les expressions Lambda sont "juste du sucre syntaxique autour des délégués anonymes", car les expressions de Lambda et les méthodes anonymes sont "juste du sucre syntaxique autour de créer des délégués (et des arbres d'expression)".

    Ne pas escompter Syntaxtic Sugar, cependant, les avantages des fonctions anonymes agissant en tant que fermetures sont énormes, ainsi que la possibilité d'avoir le code juste où vous le souhaitez, au lieu d'une méthode distincte.


5 commentaires

Jabtw est ma nouvelle abréviation pour la journée - juste un peu trop wordy. Parfait pour les critiques de code.


+1 mmmmmm ... Arbres d'expression.


Ainsi, l'expression utilisée afin que les agrégats de méthodes anonymes puissent être effondrés pour le code qui effectue essentiellement des méthodes écrites manuellement?


@ 280z28 - Je ne sais pas vraiment ce que tu veux dire, j'ai peur.


Merci beaucoup vous tous, les gars. Semble que je dois lire beaucoup de choses pour commencer à comprendre cela.



4
votes

sont-ils juste du sucre syntaxique autour délégués anonymes, ou est là quelque chose de plus que je ne peux pas voir?

bonne question. La réponse est compliquée. Tout d'abord, évidemment, les arbres d'expression sont le grand. Mais il y a aussi certaines subtilités. Voici mes cinq Prolix et fréquemment digressoirs d'articles sur le sujet de la manière dont les Lambdas sont subtilement différents des méthodes anonymes:

http://blogs.msdn.com/ericlippert/archive/2007/01/10/Aglda-expressions-vs-anonymous-methods-par-one.aspx

http://blogs.msdn.com/ericlippert/archive/2007/01/11/LAMBDA-EXPESSIONS-VS-Anonymous-methods-par-two.aspx

http://blogs.msdn.com/ericlippert/archive/2007/01/12/LAMBDA-EXPESSIONS-VS-Anonymous-methods-par-three.aspx

http://blogs.msdn.com/ericlippert/archive/2007/03/26/LAMBDA-EXPESSIONS-VS-Anonymous-methods-par-four.aspx

http://blogs.msdn.com/ericlippert/archive/2007/03/28/Aglda-expressions-vs-anonymous-methods-par-five.aspx

Tous mes articles sur les problèmes impliquant des expressions Lambda sont archivés ici:

http://blogs.msdn.com/ericlippert /Rarchive/tags/LAMBDA+XPESSIONS/DEFAULT.ASPX


0 commentaires