1.多播委托
多播委托可以包含多种方法。执行多播委托时,按方法添加时顺序调用多个方法,如果其中一个方法出现异常,整个迭代就会止,后面的方法不再执行。
如果方法有返回值,则多播委托只能得到最后一个方法的返回值,所以多播委托的返回类型一般为void。
2.方法的增减
+=为委托增加方法,-=为委托减少方法。委托没有指向任何方法时,调用会出异常,需要先判断委托是否为空。
Action acitons = Test1; //Test1, Test2是参数为空,返回值为空的函数
acitons += Test2; //多播委托
if (acitons != null)
{
acitons.Invoke();
}
3.取得多播委托中的所有方法
函数GetInvocationList()可以取得多播委托中的所有方法,返回委托数组。
Delegate[] delegates = acitons.GetInvocationList();
foreach (var item in delegates)
{
item.DynamicInvoke();
}
4.示例
static void Test1()
{
Console.WriteLine("test1");
}
static void Test2()
{
Console.WriteLine("test2");
}
static void Main(string[] args)
{
Action acitons = Test1;
acitons += Test2; //多播委托
if (acitons != null) //委托没有指向任何方法时,调用会出异常。需要先判断是否为空
{
acitons.Invoke();
}
//取得多播委托中的所有方法
Delegate[] delegates = acitons.GetInvocationList();
foreach (var item in delegates)
{
item.DynamicInvoke();
}
执行结果