Usos de delegados em c # (ou outros idiomas)
Eu sempre me perguntei como os delegados podem ser úteis e por que devemos usá-los? Outros, em seguida, sendo tipo seguro e todas as vantagens na documentação do Visual Studio, quais são os usos do mundo real dos delegados.
Eu já encontrei um e é muito segmentado.
using System;
namespace HelloNamespace {
class Greetings{
public static void DisplayEnglish() {
Console.WriteLine("Hello, world!");
}
public static void DisplayItalian() {
Console.WriteLine("Ciao, mondo!");
}
public static void DisplaySpanish() {
Console.WriteLine("Hola, imundo!");
}
}
delegate void delGreeting();
class HelloWorld {
static void Main(string [] args) {
int iChoice=int.Parse(args[0]);
delGreeting [] arrayofGreetings={
new delGreeting(Greetings.DisplayEnglish),
new delGreeting(Greetings.DisplayItalian),
new delGreeting(Greetings.DisplaySpanish)};
arrayofGreetings[iChoice-1]();
}
}
}
Mas isso não me mostra exatamente as vantagens de usar delegados ao invés de um condicional "If ... {}" que analisa o argumento e executa o método.
Alguém sabe por que é melhor usar o delegado aqui em vez de "se ... {}". Além disso, você tem outros exemplos que demonstram a utilidade dos delegados.
Obrigado!