阅读文档,我可以看到, +
操作符可以用来撰写/合同类型的代表。
以同样的方式,我可以看到,我可以从由委托使用删除-
运营商。
我也注意到, 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
从调用列表他们似乎产生在如何结合方面是相同的结果/删除。
我已经看到了各种示例中使用的SO和其他代码两种方式。 有,我应该用一种方式或其他理由吗? 是否有任何坑瀑布? 例如- I可以看到在线路的警告a -= b;
声称Delegate subtraction has unpredictable results
-所以我应该避免这种通过删除?