C#一次性删除委托中的所有方法

时间:2022-04-30 07:58:05

因为有的时候需要一次性删除委托中的所有方法 ,, 有时候不知道委托中挂载了哪些方法 , 即可通过委托的方法 GetInvocationList 得到此委托中所挂载的所有的方法一次行删除。来一个例子:

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestA {     public class Program     {         public delegate void Delistener(string name);         public void SayA(string name)         {             Console.WriteLine("A : {0}", name);         }         public void SayB(string name)         {             Console.WriteLine("B : {0}", name);         }         static void Main(string[] args)         {             Program p = new Program();             Delistener myDe = p.SayA;             Console.WriteLine(myDe);             myDe += p.SayB;             Console.WriteLine(myDe);             Delegate[] ar =  myDe.GetInvocationList();             myDe("Aonaufly");             for (int i = 0; i < ar.Length; i++)             {                 myDe -= ar[i] as Delistener;             }             Console.WriteLine(myDe);             Console.Read();         }     } }

依然事用到 -= 操作符。