c#中的多播委托

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();
    }

执行结果


猜你喜欢

转载自blog.csdn.net/liyazhen2011/article/details/81048666