Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从多播委托中删除特定委托的所有实例_C#_Multicastdelegate - Fatal编程技术网

C# 从多播委托中删除特定委托的所有实例

C# 从多播委托中删除特定委托的所有实例,c#,multicastdelegate,C#,Multicastdelegate,注意:我写这篇文章是为了记录我问题的答案,因为我经常发现自己不得不手动研究这个问题 我正在寻找一种有效的确定性方法,从多播委托中删除委托的所有实例。以tis代码为例: Func<int> outputProvider = null; Func<int> valueProvider1 = () => 1; Func<int> valueProvider2 = () => 2; Func<int> valueProvider3 =

注意:我写这篇文章是为了记录我问题的答案,因为我经常发现自己不得不手动研究这个问题

我正在寻找一种有效的确定性方法,从多播委托中删除委托的所有实例。以tis代码为例:

 Func<int> outputProvider = null;

 Func<int> valueProvider1 = () => 1;
 Func<int> valueProvider2 = () => 2;
 Func<int> valueProvider3 = () => 3;
 
 outputProvider += valueProvider1; 
 outputProvider += valueProvider2;
 outputProvider += valueProvider3;
 outputProvider += valueProvider3;
 
 outputProvider -= valueProvider3;

 var value = outputProvider.Invoke();
 Console.WriteLine("Value: " + value);
Func outputProvider=null;
Func valueProvider1=()=>1;
Func valueProvider2=()=>2;
Func valueProvider3=()=>3;
outputProvider+=valueProvider1;
outputProvider+=valueProvider2;
outputProvider+=valueProvider3;
outputProvider+=valueProvider3;
outputProvider-=valueProvider3;
var value=outputProvider.Invoke();
Console.WriteLine(“值:”+Value);

尽管我删除了提供程序3,但输出仍然是3,有没有一种简单的方法可以删除委托的所有实例?

非常简单:

outputProvider=(Func)委托.RemoveAll(outputProvider,valueProvider3);

我看不到您要从哪里删除it@Charliefaceoops复制错误感谢您提醒我使用它自己检查代理集?