【发布时间】:2023-03-29 02:55:01
【问题描述】:
在 C# 5 中,取消订阅事件时 -= 运算符的行为是什么。
假设多次订阅同一个事件对该应用逻辑有效,如下:
Property_Saved += Property_Saved_Handler;
Property_Saved += Property_Saved_Handler;
Property_Saved += Property_Saved_Handler;
现在我们订阅了 3 次。
退订后用以下一行代码:
Property_Saved -= Property_Saved_Handler;
还剩多少订阅? 2?没有? ...?
【问题讨论】:
-
你试过了吗?
-
好吧,如果这些是数字呢?
int x = 0; x += 1; x += 1; x += 1; x -= 1;。是x2?还是 0? -
@MorganThrapp 如果他们是
IEnumerable<DateTime>怎么办?如果奶奶有轮子,她会是一列火车。由于多播委托不是整数,因此怀疑它是否像整数一样是公平的。这并不是说他无法通过运行自己的代码自己发现。 -
我没想到这么简单的问题会如此冒犯。
-
这是一个合法的问题。为什么底层方法叫
Delegate.Combine而不是Delegate.Add?对我来说,有点像代表的 HashSet ......如果目标是相同的方法,-=如何知道要删除哪个代表?它不会是内存中的相同地址吗?即使使用示例代码,理解事件委托也并不总是显而易见的。给出解释后可能看起来很简单。
标签: c# events unsubscribe