C# 取消订阅从未订阅过的活动是否安全?
例如,如果这些代码:C# 取消订阅从未订阅过的活动是否安全?,c#,.net,events,subscribe,unsubscribe,C#,.net,Events,Subscribe,Unsubscribe,例如,如果这些代码: Button button1 = new Button(); // ... button1.Click -= button1_Clicked; 在以下日期之前执行: button1.Click += button1_Clicked; 我没有发现任何错误或异常,但我想知道这里是否有任何缺点 如果是安全的,为什么允许取消订阅从未订阅过的事件?我找不到特定于事件的引用,但记录了事件使用的委托。删除: 如果值为nu
Button button1 = new Button();
// ...
button1.Click -= button1_Clicked;
在以下日期之前执行:
button1.Click += button1_Clicked;
我没有发现任何错误或异常,但我想知道这里是否有任何缺点
如果是安全的,为什么允许取消订阅从未订阅过的事件?我找不到特定于事件的引用,但记录了事件使用的委托。删除
:
如果值为null或在源的调用列表中找不到值的调用列表,则返回源
因此,至少对于使用隐式访问器的事件是安全的
自定义访问器是另一个蜡球,因为可以根据需要实现remove
块。我假设人们会模仿隐含的行为,但这不是强制执行的。为什么你会期望它不是这样?在我订阅之前,我们可以从某些东西中退订,这是没有意义的。足够公平,但是考虑一下<代码>列表< /代码>。如果调用list.Remove(new T())
,它不会引发异常。大多数C#集合类型最多只能返回false
。我在哪里可以找到此参考?MSDN文档