为什么要在调用事件之前为事件分配处理程序?基本上,我已经看到它用了很多:publiceventMyEventHandlerMyEvent;privatevoidSomeFunction(){MyEventHandlerhandler=this.MyEvent;if(handler!=null){handler(this,newMyEventArgs());}}what有时可以像这样轻松完成:publiceventMyEventHandlerMyEvent;privatevoidSomeFunction(){if(MyEvent!=null){MyEvent(this,newMyEventArgs());那么,我错过了什么吗?是否有人将事件分配给处理程序然后引发处理程序而不是事件本身?这只是“最佳实践”吗?对局部变量的赋值确保如果事件在if和实际调用之间取消注册,则调用列表不会为空(因为变量将具有原始调用列表的副本)。这在多线程代码中很容易发生,在检查null和触发事件之间,它可能被另一个线程取消注册。看到这个问题和答案。线程安全。如果在检查MyEvent是否为null和触发MyEvent之间,另一个线程出现并取消订阅该事件怎么办?以上是C#学习教程:为什么要先给事件分配处理程序再调用?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
