Delegates
A delegação ocorre quando uma classe não possui uma determinada funcionalidade por não a ter herdado de uma superclasse, por isso, a solução é delegar a responsabilidade para outra classe.
Using system;
Public class Teste
{
Public delegate float CalcRenda (float horas);
Public static void Main (string[] args)
{
CalcRenda del = new CalcRenda (Pessoa.CalcRendaAnual);
Console.WriteLine (del(30));
}
public class Pessoa
{
}
public static float CalcRendaMensal (float horas)
{
return horas * 160;
}
public static float CalcRendaAnual (float horas)
{
return horas * 160 * 12;
}
}
Saída:
57600
Após instanciar a delegação, ela armazena a chamada do método passado como parâmetro de criação e, quando habilitamos del(30), o número 26 é delegado à função CalcRendaAnual. A resposta é retornada como parâmetro de entrada para o método Console.WriteLine.