C# 2.0 - O que são métodos anónimos? Liberalização dos Domínios .pt
Mar 13

Artigo Principal - As Novas Funcionalidades do C# 3.0

image Uma expressão Lambda é uma função anónima que pode conter expressões e declarações, e pode ser usada para criar delegates ou expression tree types.

As expressões Lambda usam o operador =>. O lado esquerdo do operador lambda especifica os parâmetros de entrada  e o lado direito especifica a expressão. Por exemplo, a expressão Lambda x=>x*x .

Passemos a um exemplo prático:

using System;

namespace ConsoleApplication
{
    //Declare a Delegate
    delegate int Del(int x);

    class Program
    {
        static void Main(string[] args)
        {
            //Create the Lambda Expression
            Del AoQuadrado = x => x*x;

            Console.WriteLine(AoQuadrado(4));

            Console.ReadKey();
        }
    }
}

Como podem ver pelo exemplo anterior associámos a expressão Lambda a um delegate type criado.


Outra forma de utilizar as Lamba Expressions, é através generic delegates, tornando a declaração ainda mais concisa, neste caso até inline.

using System;

namespace ConsoleApplication
{

    class Program
    {
        static void Main(string[] args)
        {
            //Generic delegate and lambda expression
            Func<int, int> AoQuadrado = x => x*x;

            Console.WriteLine(AoQuadrado(4));

            Console.ReadKey();
        }
    }
}

Na minha opinião, um dos sitios em que as Lambda Expressions dão imenso jeito, é para efectuar filtros em determinadas querys, pois são bastante intuitivas e compactas.

Vejam o exemplo seguinte onde queremos descobrir quantos números são maiores que 32.

using System;
using System.Linq;

namespace ConsoleApplication
{

    class Program
    {
        static void Main(string[] args)
        {
            // Data source.
            int[] scores = { 93, 90, 82, 75, 71, 50, 33, 21 };

            const int value = 32;

            // The call to Count forces iteration of the source
            int highScoreCount = scores.Where(n => n > value).Count();

            Console.WriteLine(”Existem {0} valores maiores que {1}”, highScoreCount, value);

            Console.ReadKey();
        }
    }
}

Atenção que tem de utilizar o “System.Linq” para terem disponível a função Where. É muito mais simples efectuar um filtro deste género, apenas numa linha de código. Algo que era muito mais complexo antes das lambda expressions.

Depois de nos habituarmos às Lambda Expressions, pouparemos bastante trabalho no desenvolvimento.

E vocês já utilizam lambda expressions?

 

rss_icon_glass_reflection64

Se gostaram deste artigo subscrevam a feed RSS do istomesmo, para ficarem actualizados sobre os últimos artigos.

» Subscrevam aqui a fedd RSS «

Obtenha mais informações sobre a fedd RSS aqui


publicado por NC Etiquetas: ,

Deixar uma resposta