C#一次性删除委托中的所有方法
因为有的时候需要一次性删除委托中的所有方法 , 有时候不知道委托中挂载了哪些方法 , 即可通过委托的方法 GetInvocationList 得到此委托中所挂载的所有的方法一次行删除。来一个例子:
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceTestA{publicclassProgram{publicdelegatevoidDelistener(stringname);publicvoidSayA(stringname){Console.WriteLine("A:{0}",name);}publicvoidSayB(stringname){Console.WriteLine("B:{0}",name);}staticvoidMain(string[]args){Programp=newProgram();DelistenermyDe=p.SayA;Console.WriteLine(myDe);myDe+=p.SayB;Console.WriteLine(myDe);Delegate[]ar=myDe.GetInvocationList();myDe("Aonaufly");for(inti=0;i<ar.Length;i++){myDe-=ar[i]asDelistener;}Console.WriteLine(myDe);Console.Read();}}}
依然事用到 -= 操作符。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。