Zastosowania delegatów w C # (lub innych językach)
Zawsze zastanawiałem się, jak delegaci mogą być przydatni i dlaczego powinniśmy ich używać? Inne to bycie bezpiecznym typem i wszystkie te zalety w Visual Studio Documentation, jakie są rzeczywiste zastosowania delegatów.
Znalazłem już jeden i jest bardzo ukierunkowany.
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]();
}
}
}
Ale to nie pokazuje mi dokładnie zalet korzystania z delegatów zamiast warunkowego „If ... {}”, który analizuje argument i uruchamia metodę.
Czy ktoś wie, dlaczego lepiej jest użyć delegata tutaj niż „jeśli ... {}”. Masz również inne przykłady, które pokazują przydatność delegatów.
Dzięki!