我正在尝试使用C#学习Multicast delegate
。我编写了以下程序:
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
的使用。这是对的吗?使用此设计/功能的正确方法是什么?
EDIT :另外,我还读到委托还返回一个实例,这是什么意思?如有可能,请提供一个小例子。