Usos de delegados en C # (u otros idiomas)
Siempre me he preguntado cómo los delegados pueden ser útiles y por qué debemos usarlos. Además de ser seguro para el tipo y todas esas ventajas en la documentación de Visual Studio, ¿cuáles son los usos reales de los delegados?
Ya encontré uno y está muy enfocado.
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]();
}
}
}
Pero esto no me muestra exactamente las ventajas de usar delegados en lugar de un condicional "If ... {}" que analiza el argumento y ejecuta el método.
¿Alguien sabe por qué es mejor usar delegado aquí en lugar de "if ... {}". También tiene otros ejemplos que demuestran la utilidad de los delegados.
¡Gracias!