Miguel, as closures não são exclusivas das expressões lambda. O métodos anónimos também têm esta funcionalidade. – Paulo Morgado 30/01/14 às 1:30
@PauloMorgado Do jeito que eu disse, realmente ficou parecendo que essa é a única forma de fazer closures... vou editar. Valeu! – Miguel Angelo 30/01/14 às 12:00
Ótima explicação, Miguel. – Diogo Moreira 30/01/14 às 12:31
Vale ressaltar outros aspectos das expressões lambda, como Expression Trees, a geração de closures, entre outras, como descrito na minha resposta. – Miguel Angelo 29/01/14 às 18:16
@MiguelAngelo Está certo, mas minha resposta foi focada no uso delas no C# (e no LINQ, como aparentava ser o foco do autor da pergunta). Não que Expression Trees e Closures não sejam importantes (especialmente Closures que são um conceito importantíssimo), mas acho que são conceitos que vão muito além do escopo da pergunta. – André Leria 29/01/14 às 18:19
Não acho que seja o foco, principalmente por causa do LINQ... LINQ to objects usa lambdas na forma de delagates, mas LINQ to Entities, LINQ to SQL entre outros usam lambdas na forma de expression trees. – Miguel Angelo 29/01/14 às 18:26
@MiguelAngelo É uma forma válida de ver. Como eu citei no chat, minha resposta foi um dardo e a sua uma bola de boliche. As duas acertaram o alvo da pergunta. – André Leria 29/01/14 às 18:28
André, estás a confundir as expressões lambda com os delegates que são uma das traduções possíveis. Como o @MiguelAngelo chamou a atenção, também podem ser traduzidas para árvores de expressões. – Paulo Morgado 30/01/14 às 1:27
8.6222020 medalhas de prata3636 medalhas de bronze
+1 boa resposta - forneceste a informação solicitada, sem se prolongar em detalhes. E a comparação com "um objeto de um método só" é muito relevante - antes de termos lambdas em C#, era exatamente isso o que fazíamos. – rsenna 29/01/14 às 18:25