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.