相关疑难解决方法(0)

在C#中组合多播委托 - 我应该使用运算符还是Action.Combine?

阅读文档我可以看到+运算符可以用于组合/组合相同类型的委托.

以同样的方式,我可以看到我可以使用-运算符从组合委托中删除a .

我还注意到该Action类型具有静态CombineRemove方法,可用于连接两个委托的调用列表,并分别从另一个委托的调用列表中删除委托的调用列表的最后一次出现.

        Action a = () => Debug.WriteLine("Invoke a");
        Action b = () => Debug.WriteLine("Invoke b");
        a += b;
        a.Invoke(); 

        //Invoke a
        //Invoke b

        Action c = () => Debug.WriteLine("Invoke c");
        Action d = () => Debug.WriteLine("Invoke d");
        Action e = Action.Combine(c, d);
        e.Invoke();

        //Invoke c
        //Invoke d

        a -= b;
        a.Invoke();

        //Invoke a

        e = Action.Remove(e, d);
        e.Invoke(); 

        //Invoke c
Run Code Online (Sandbox Code Playgroud)

它们在调用列表中如何组合/删除时似乎产生相同的结果.

我已经看到在SO和其他代码中的各种示例中使用的两种方式.有什么理由我应该使用这种或那种方式吗?坑坑洼洼吗?例如-我可以看到线警告a -= b;指出Delegate …

c# delegates accessor

7
推荐指数
1
解决办法
2961
查看次数

标签 统计

accessor ×1

c# ×1

delegates ×1