码迷,mamicode.com
首页 > 其他好文 > 详细

多播委托

时间:2020-06-01 13:39:27      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:read   delegate   voc   list   string   引用   +=   就会   nbsp   

多播委托,顾名思义即使一个委托引用多个方法

举列

static void Test1
{
   Console.writLine(“test1”);
}
static void Test2
{
  Console.writLine("test2");     
}
static void Main(string[] args)
{
   Action a = Test1;
   a += Test2//添加一个委托的引用   所以删除一个委托的应用为a -=Test2
   a();
   Console.ReadKey();
}

虚注意的几点为:1.当一个委托没有指向任何一个方法的时候,调用的话会出现异常null;

                             2.按照顺序调用方法

                             3.多播委托只能得到调用的最后一个方法的返回值

                             4.在多播委托逐一调用方法时,有一个方法抛出异常,整个迭代就会停止

下面这一委托为取得多播委托中所有方法的委托:

Action a1 = Method1;

a1+=Method2;

Delegate[] delegates=a1.GetInvocationList();

foreach(delegate d in delegates)

{

//d();

d.DynamicInvoke(null);

} 遍历多播委托中所有的委托,然后单独调用

举列

static void Test1
{
   Console.writLine(“test1”);
}
static void Test2
{
  Console.writLine("test2");     
}
static void Main(string[] args)
{
   Action a = Test1;
   a += Test2
   Delegate[] delegetes=a.GetInvocationList();//使用GetInvocationList()把委托a中的方法传递给delegetes数组
foreach(Delegate de in delegetes)
{
de.DynamicInvoke(); //明确知道类型的用Invoke()方法调用会接省时间
}
Console.Readkey();
}

 

多播委托

标签:read   delegate   voc   list   string   引用   +=   就会   nbsp   

原文地址:https://www.cnblogs.com/jiangxiaoming/p/13024422.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!