C# 如何访问添加到委托的以前的函数

C# 如何访问添加到委托的以前的函数,c#,delegates,func,C#,Delegates,Func,我对委托是新手,据我所知,您可以向委托添加两个或更多函数(使用+=)。但当您激活委托时,它将始终调用添加的最后一个函数。如果我想调用我以前添加的函数呢?假设我有: publicstaticintadd(into1,into2) { 返回o1+o2; } 公共静态整数乘法(整数o1,整数o2) { 返回o1*o2; } 公共静态整数负(整数o1,整数o2) { 返回o1-o2; } 因此,我使用委托(实际上是Func)来添加所有这些函数 Func; f=加; f+=乘法; f+=负; 现在让我

我对委托是新手,据我所知,您可以向委托添加两个或更多函数(使用
+=
)。但当您激活委托时,它将始终调用添加的最后一个函数。如果我想调用我以前添加的函数呢?假设我有:

publicstaticintadd(into1,into2)
{
返回o1+o2;
}
公共静态整数乘法(整数o1,整数o2)
{
返回o1*o2;
}
公共静态整数负(整数o1,整数o2)
{
返回o1-o2;
}
因此,我使用委托(实际上是
Func
)来添加所有这些函数

Func;
f=加;
f+=乘法;
f+=负;
现在让我们假设我想调用
乘法
加法
,如果我使用:

控制台写入线(f(1,2)); 它将只调用
减号

编辑

顺便说一句,我知道可以使用
-=
删除函数,但是如果有大量函数,就不方便了。然而,我正在寻找的解决方案是索引(比如数组)

f[2](5,3)

似乎不起作用。

这在(我的重点)中有明确规定:

调用其调用列表包含 多个条目通过调用 按顺序同步调用列表。[…]如果代表 调用包括输出参数或返回值(它们的最终值) 值将来自调用 名单

因此,并不是其他委托没有被执行。他们是。只是只返回最后一个委托的返回值。如果其他代理有一些副作用,例如打印到控制台,您就会看到它们

编辑

如果要像这样访问代理,请执行以下操作:

f[2](5,3) 
然后您可能需要一个
列表
,而不是多播委托