<分区>
我是委托(delegate)新手,据我所知,您可以向委托(delegate)添加两个或更多函数(使用 +=
)。但是当你激活一个委托(delegate)时,它总是会调用最后添加的函数。如果我想调用之前添加的函数怎么办?假设我有:
public static int add(int o1, int o2)
{
return o1 + o2;
}
public static int multiply(int o1, int o2)
{
return o1 * o2;
}
public static int minus(int o1, int o2)
{
return o1 - o2;
}
所以我使用一个委托(delegate)(实际上是一个 Func
)来添加所有这些函数。
Func<int, int, int> f;
f = add;
f += multiply;
f += minus;
现在假设我想调用multiply
或add
,我不能这样做,如果我使用:
Console.WriteLine(f(1,2));
它只会调用minus
。
编辑
顺便说一句,我知道可以使用-=
来删除函数,但是如果有大量函数,就不方便了。我正在寻找的解决方案是索引(如数组)
f[2](5,3)
好像不行。