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)
然后您可能需要一个列表
,而不是多播委托