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!

questionAnswers(11)

yourAnswerToTheQuestion