【发布时间】:2021-07-02 23:32:27
【问题描述】:
也许我在谷歌上搜索得不够努力,但我想了解分配事件时的语法“+=”。例如我们使用:
myButton.Click += MyClickEvent;
而不是:
myButton.Click = MyClickEvent;
为什么会这样?这里有一些数学吗?为什么要添加地址?
【问题讨论】:
-
如果一个事件被调用,可以执行几个方法。因此,您可以使用
+=运算符将这些方法添加到事件中。如果不再执行某个方法,您可以使用-=运算符再次删除它 -
@SomeBody - 啊,所以 myButton.Click 有效地维护了要调用的方法列表。我不知道。谢谢你。现在一切都说得通了。
-
因为您为事件附加一个代表,这意味着向现有的东西添加一些东西,这在 C# 中最好表示为 +=
-
这里的术语是“多播”——在 C# 中创建的所有委托都是多播的;在 .NET 单播委托的起源中的某个时刻是一件事,但实际上:它们不是(它可能仍然可以通过 IL 创建一个尝试单播委托,但我' d需要检查)
-
@MarcGravell 我不相信它在 MSIL 中是可能的,尽管其他实现可能允许它。 ECMA-335 Section 14.6 Implementation-Specific (Microsoft)
标签: c# events delegates compound-assignment