Я пытаюсь учиться Multicast delegate
на C #. Я написал следующую программу:
using System;
public static class Program {
delegate int Calc(int x, int y);
static int Add(int a, int b) {
Console.WriteLine("Add");
return a + b;
}
static int Sub(int a, int b) {
Console.WriteLine("Sub");
return a - b;
}
public static void Main(string [] args) {
Calc c;
c = new Calc(Add);
c += new Calc(Sub);
Console.WriteLine("#######");
int result = c(4, 6);
Console.WriteLine(result);
}
}
Вывод:
#######
Add
Sub
-2
Я не могу понять, в чем выгода Multicast delegate
, когда мы вызвали c(4, 6)
, он вошел в функцию Add
, но ничего не сделал с возвращаемым значением (которое равно 10), скорее это просто распечатал сообщение и перешел ко второй функции. Я вижу использование Multicast delegate
только тогда, когда мы говорим о функции void
(которая не возвращает значение). Это правильно? Как правильно использовать этот дизайн / функцию?
РЕДАКТИРОВАТЬ : Также я прочитал, что делегат также возвращает экземпляр, что это значит? Если возможно, приведите небольшой пример.