Boa Noite,
Eu ando lendo diversos sites e vídeos, mesmo assim não consigo compreender do uso de eventos ao envés de delegates, poderiam me explicar ambos? mais concentrado no uso dos eventos.
Eu sei que delegates suportam as refêrencias aos métodos, de acordo com a sua assinatura. Podendo chama-lo como um método e assim, todos os métodos seriam convocados.
Agora dos eventos, eles necessitam dos delegates para funcionarem, entretanto, ai que entra a minha dúvida, eles também suportam refêrencia á métodos e podem ser convocados como um da mesma forma como um delegate seria chamado.
Observe abaixo:
class Principal
{
public delegate void Login(string nick, int id);
public Login Player = null;
public event Login eventoPlayer = null;
static void Main(string[] args)
{
try
{
Principal convoDelegate = new Principal();
convoDelegate.Player = delegate(string nick, int id)
{
Console.WriteLine(":: Player {0} está logando com o ID {1} - Delegate disparado.",nick , id);
};
Principal convoEvento = new Principal();
convoEvento.eventoPlayer = delegate(string nick, int id)
{
Console.WriteLine(":: Player {0} está logando com o ID {1} - Evento disparado.", nick, id);
};
// Chamar o delegate, ele não é estatico portanto, chamamos a refêrencia do objeto primeiro.
convoDelegate.Player.Invoke("Teste-Delegate", 0);
// Chamar o evento , para demonstrar a duvida que fazem a mesma coisa.
convoEvento.eventoPlayer.Invoke("Teste-Evento", 0);
}
catch (Exception ex)
{
Console.WriteLine(":: ERRO " + ex.Message);
}
Console.WriteLine(":: Fim do programa, pressione qualquer tecla...");
Console.ReadKey();
}
Alguém poderia me explicar seus usos e diferenças entre eles? obrigado !