Использование делегатов в C # (или других языках)
Мне всегда было интересно, чем могут быть полезны делегаты и почему мы будем их использовать? Помимо безопасности типов и всех этих преимуществ в документации Visual Studio, каковы реальные случаи использования делегатов.
Я уже нашел один, и он очень нацелен.
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]();
}
}
}
Но это не показывает мне в точности преимущества использования делегатов, а не условного "If ... {}" который разбирает аргумент и запускает метод.
Кто-нибудь знает, почему здесь лучше использовать делегат, а не "если ... {}". Также у вас есть другие примеры, которые демонстрируют полезность делегатов.
Спасибо!