说我有以下代码:
public event EventHandler DatabaseInitialized = delegate {};
//a intederminant amount of subscribers have subscribed to this event...
// sometime later fire the event, then create a new event handler...
DatabaseInitialized(null,EventArgs.Empty);
//THIS LINE IS IN QUESTION
DatabaseInitialized = delegate {};
Run Code Online (Sandbox Code Playgroud)
这会清除订阅者,用新的空默认值替换它吗?并且,该事件会在被清除之前通知所有订户吗?IE有竞争条件的机会吗?
是的它会清除它.因为事件在同一个线程中同步发生,所以不应该有竞争条件.
我的建议:如有疑问,请编写一个小型测试应用程序,然后......测试一下.
更新:我在发布前测试过它.(回应弊端.)