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文档