阅读文档我可以看到+运算符可以用于组合/组合相同类型的委托.
以同样的方式,我可以看到我可以使用-运算符从组合委托中删除a .
我还注意到该Action类型具有静态Combine和Remove方法,可用于连接两个委托的调用列表,并分别从另一个委托的调用列表中删除委托的调用列表的最后一次出现.
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 …