Как и многие другие сообщения, которые я нашел на SO, я пытаюсь разобраться с делегатами. Надеемся, что этот пример не классифицирован как дубликат, потому что я задаю конкретный вопрос о конкретном примере.Пример делегата, в чем смысл
public delegate void HelloFunctionDelegate(string message);
public class Delegate
{
static void Main()
{
HelloFunctionDelegate del = new HelloFunctionDelegate(GoodNight); // delegate will point to the GoodNight method
del("Hello"); // invoke the delegate
}
public static void GoodMorning(string strMessage)
{
Console.WriteLine(strMessage + " and good morning!");
Console.ReadKey();
}
public static void GoodNight(string strMessage)
{
Console.WriteLine(strMessage + " and good night!");
Console.ReadKey();
}
}
Так в моем примере я понимаю, что мой делегат является ссылкой на какую-либо функцию, которая соответствует его подписи и, если я прохожу в Goodmorning я увидеть: Hello and good morning!
и если я прохожу в GoodNight я буду см: Hello and good night!
Так его вроде как проходит через средний человек ...
Я не понимаю, в чем дело, почему бы мне просто не напрямую позвонить мой GoodMorning/Методы GoodNight, когда и когда мне нужно их использовать?
Возможно, есть лучшие примеры того, когда делегат полезен, но в этом примере почему я просто не обхожу среднего человека?
Возможно выполнение задержки. Например, используйте метод расширения .ForEach() ', он принимает делегат, который будет выполнен для элемента в списке. Поэтому эти делегаты задерживаются в их исполнении. –
Попробуйте выполнить поиск, существует много дубликатов. – CodeCaster
Прочтите мой вопрос, и вы заметите, что я уже упоминаю тот факт, что я прочитал много других сообщений, я хочу повод для этого конкретного примера. – JsonStatham