PontoNetPT
A comunidade PontoNetPT está direccionada a todos os programadores que trabalhem com a plataforma .NET.
A evolução dos Delegates

Em tão pouco tempo o delegate evoluiu muito dentro da plataforma .NET. Supondo que temos um delegate que recebe dois números inteiros e retorna um valor, também inteiro, temos as seguintes formas de proceder para executar o delegate nas respectivas versões do .NET até o momento:

delegate int Operacao(int a, int b);

[ Versão 1.x ]
static void Main(string[] args)
{
    Operacao op = new Operacao(Soma);
    Console.WriteLine(op(2, 4));
}

public static int Soma(int a, int b)
{
    return (a + b) * 3;
}

[ Versão 2.0 ]
static void Main(string[] args)
{
    Operacao op = new Operacao(delegate(int a, int b)
    {
        return (a + b) * 3;
    });

    Console.WriteLine(op(2, 4));
}

[ Versão 3.5 ]
static void Main(string[] args)
{
    Operacao op = (a, b) => (a + b) * 3;
    Console.WriteLine(op(2, 4));
}

A primeira versão não tem o muito o que comentar. É aquilo e pronto! Já a versão 2.0 do .NET permitiu a criação de métodos anonimos, o que evita de criarmos um método auxiliar (Soma) para vincularmos ao delegate. Já a versão 3.5 vai além. Como podemos notar, especificamos os parametros antes do operador "=>" (e os tipos são inferidos de acordo com a assinatura do delegate). Após esse operador é onde efetivamente colocaremos o código do método.

Isso é usado extensivamente quando utilizamos o Linq. Particularmente, a primeira vista eu também achei um bocado complexo mas praticando (nem que for por brincandeira) voce se adapta rapidamente.


Posted 2007-5-10 6:58 by Israel Aéce
Filed under: ,

Comments

Israel Aéce wrote re: A evolução dos Delegates
on 2007-5-12 20:18
Ola Oneda,

Sim, concordo contigo. Mas por um outro lado, eu prefiro dessa forma ao invés de criar um único procedimento para apenas uma linha de código. Isso acabava "poluindo" um pouco a classe.

Att,
Anonymous wrote re: A evolução dos Delegates
on 2009-7-1 0:02
Realmente, a sintaxe é um pouco estranha, e pode causar estranheza. Pode gerar código difícil para ler, como em C/C++, se mal utilizado
Anonymous wrote re: A evolução dos Delegates
on 2009-7-2 1:20
Realmente, a sintaxe é um pouco estranha, e pode causar estranheza. Pode gerar código difícil para ler, como em C/C++, se mal utilizado

Add a Comment

(required)
(optional)
(required)  
Remember Me?
Powered by Community Server (Commercial Edition), by Telligent Systems