sábado, fevereiro 02, 2013

Delegates c#

Por vezes esqueço a verdadeira razão ou vantagem no uso de delegates em C#.

Delegate é um recurso da linguagem C# que permite que se faça referência a um método. São também referenciados como apontadores de funções.

Sendo os delegates classes, estes são instanciados também, mas os parâmetros são nomes de uma função.

Assinatura do delegate:

Delegate int ExemploDeDelegate(string nome, bool b);

Considerando um método:


private int TesteFuncao(string str, bool bln)
{...}

ExemploDeDelegate exdel = new ExemploDeDelegate(TesteFuncao);

Desta forma o exdel refere-se ao método TesteFuncao();

Para isso existem 3 fases:
Declaração;
Instanciação;
Invocação;


using System;
namespace TesteDelegate
{
    // Declaração
    public delegate void TesteDelegate();
    class ExDelegate
    {
        public static void TesteFuncao()
        {
            Console.WriteLine("Chamaram-me?");
        }
        public static void Main()
        {
            // Instanciação
            TesteDelegate testeDelegate = new TesteDelegate(TesteFuncao);
            // Invocação
            testeDelegate();
            Console.ReadKey();
        }
    }
}