C#为什么分配事件处理程序使用+;=操作员和非操作员=
也许我在谷歌搜索不够努力,但我想了解分配事件时的语法“+=”。例如,我们使用:C#为什么分配事件处理程序使用+;=操作员和非操作员=,c#,events,delegates,compound-assignment,C#,Events,Delegates,Compound Assignment,也许我在谷歌搜索不够努力,但我想了解分配事件时的语法“+=”。例如,我们使用: myButton.Click += MyClickEvent; 而不是: myButton.Click = MyClickEvent; 为什么会这样?这里有数学课吗?为什么要添加地址?一个事件可以有多个处理程序,因此它不是分配,而是订阅。 您可以执行以下操作,然后将调用所有处理程序。 myButton.Click += MyClickEvent; myButton.Click += MyClickEvent1;
myButton.Click += MyClickEvent;
而不是:
myButton.Click = MyClickEvent;
为什么会这样?这里有数学课吗?为什么要添加地址?一个事件可以有多个处理程序,因此它不是分配,而是订阅。
您可以执行以下操作,然后将调用所有处理程序。
myButton.Click += MyClickEvent;
myButton.Click += MyClickEvent1;
myButton.Click += MyClickEvent2;
要取消订阅活动,请使用myButton.Click -= MyClickEvent2;
一个事件可以有多个处理程序,因此它不是分配,而是订阅。
您可以执行以下操作,然后将调用所有处理程序。
myButton.Click += MyClickEvent;
myButton.Click += MyClickEvent1;
myButton.Click += MyClickEvent2;
要取消订阅活动,请使用myButton.Click -= MyClickEvent2;
如果调用一个事件,则可以执行多个方法。因此,可以使用
+=
操作符将这些方法添加到事件中。如果一个方法不再执行,可以使用-=
operator@SomeBody-啊,所以我的按钮。单击可以有效地维护要调用的方法的列表。我不知道。非常感谢。现在一切都有了意义。因为你将一个委托附加到事件上,这意味着向现有的东西添加一些东西,这最好用+=表示,在C中,这里的术语是“多播”——所有在C中创建的委托都是多播的;在.NET单播委托起源的某个时候是一件事,但事实上:它们不是(可能仍然可以通过IL创建一个try单播委托,但我需要检查)@MarcGravel我认为在MSIL中不可能,尽管其他实现可能允许。第14.6节特定于实现(Microsoft)如果调用一个事件,可以执行多个方法。因此,可以使用+=
操作符将这些方法添加到事件中。如果一个方法不再执行,可以使用-=
operator@SomeBody-啊,所以我的按钮。单击可以有效地维护要调用的方法的列表。我不知道。非常感谢。现在一切都有了意义。因为你将一个委托附加到事件上,这意味着向现有的东西添加一些东西,这最好用+=表示,在C中,这里的术语是“多播”——所有在C中创建的委托都是多播的;在.NET单播委托起源的某个时候是一件事,但事实上:它们不是(可能仍然可以通过IL创建一个try单播委托,但我需要检查)@MarcGravel我认为在MSIL中不可能,尽管其他实现可能允许。第14.6节具体实施(Microsoft)