C#中委托的+=和-=深入研究

2019-12-26 11:25:40于海丽

C#中委托的+=和-=深入研究

也确实执行了,但在遍历多播委托集合的时候,将之前的值给覆盖了。

C#中委托的+=和-=深入研究那么现在可以得出这样的结论了:无返回值的委托,你给它注册多少个方法,它就执行多少个方法,而有返回值的委托,同样注册多少个方法就执行多少个方法,但返回的是最后一个方法的返回值。

-=

既然说了+=,那么作为收拾烂摊子的-=也不得不说。在项目中使用了+=就要使用-=来释放。那它内部做了哪些事?同样使用上面的代码,在输出结果后,使用-=来释放资源。

C#中委托的+=和-=深入研究

可以看出,使用-=内部是调用了委托的Remove静态方法。

C#中委托的+=和-=深入研究

C#中委托的+=和-=深入研究

使用-=最终是将委托置为null,为null另一个意思就是空引用,这样就可以等待垃圾回收器进行回收了。

总结

这个问题虽然很基础,一个同事当时问了,就给他说了一下,在下班的路上一直在想,内部是如何实现的?就试着通过反编译的方式一探究竟。但貌似CombineImpl这个方法,给的结果不太满意。没看到具体的实现。希望对你有所帮助!