委托可以包含多个方法,这种委托叫做多播委托。按照添加的顺序执行委托,多播委托只能得到调用的最后一个方法的结果,一般我们把多播委托的返回类型声明为void。
多播委托包含一个逐个调用的集合,如果其中一个方法出错抛异常,整个迭代就会停止。
class Program
{
static void Text1()
{
Console.WriteLine("text1");
}
static void Test2()
{
Console.WriteLine("text2");
}
static void Main(string[] args)
{ //多播委托,一个委托可以包含多个方法。
Action a = Text1;
a += Test2;
// a -= Text1;
// a -= Test2; 如果委托内无内容就会报错,空指针。
// if(a!=null)
// a();
——————————————
Delegate[] delegates =a.GetInvocationList(); //调用委托中的每个方法
foreach (Delegate de in delegates)
{
de.DynamicInvoke(); //可以把方法的参数传进去
}
Console.ReadKey();
}
}