Pergunta

Essa pergunta já tem resposta aqui:

Eu li que as Expressões Lambda são uma adição incrivelmente poderosa ao C#, mas fico perplexo com elas.Como eles podem melhorar minha vida ou melhorar meu código?Alguém pode apontar um bom recurso para aprender tais expressões?

Eles parecem muito legais, mas como eles se relacionam com minha vida cotidiana como desenvolvedor asp.net?

Editar:Obrigado pelos exemplos e pelo link para os artigos de Eric White.Ainda estou digerindo isso agora.Uma pergunta rápida:as expressões lambda são úteis para outra coisa senão consultas?Cada exemplo que vi foi uma construção de consulta.

Foi útil?

Solução

:são expressões lambda úteis para qualquer coisa além de consultar

Expressões Lamba nada mais são do que uma maneira conveniente de escrever uma função 'em linha'.

Portanto, eles são úteis em qualquer lugar onde você queira um pouco de código que possa ser chamado como se fosse uma função separada, mas que na verdade está escrito dentro de seu chamador.(Além de manter o código relacionado no mesmo local em um arquivo, isso também permite que você jogue jogos divertidos com escopo variável - consulte 'fechamentos' para referência.)

Um exemplo de uso de um lamba não relacionado à consulta pode ser um pedaço de código que faz algo de forma assíncrona que você inicia com ThreadPool.QueueUserWorkItem.O ponto importante é que você também pode escrever isso usando delegados anônimos (que foram uma introdução ao C#2) ou apenas uma função simples de membro de classe separada.

Esse http://blogs.msdn.com/jomo_fisher/archive/2005/09/13/464884.aspx é uma excelente introdução passo a passo de tudo isso, que pode ajudá-lo.

Outras dicas

Lambdas trazem programação funcional para C#.São funções anônimas que podem ser passadas como valores para outras funções.Mais usado em LINQ.

Aqui está um exemplo inventado:

List<int> myInts = GetAll();
IEnumerable<int> evenNumbers = myInts.Where(x => x % 2 == 0);

Agora, quando você foreach através de EvenNumbers, o lamda

x=> x % 2 == 0

é então aplicado como um filtro para myInts.

Eles se tornam realmente úteis para aumentar a legibilidade de algoritmos complicados que teriam muitos loops e condicionais IF aninhados.

Aqui está um exemplo simples de algo legal que você pode fazer com lambdas:

List<int> myList = new List<int>{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
myList.RemoveAll(x => x > 5);
//myList now == {1,2,3,4,5}

O método RemoveAll usa um predicado (um delegado que recebe argumentos e retorna um bool), qualquer um que corresponda a ele é removido.Usar uma expressão lambda torna tudo mais simples do que declarar o predicado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top