![]() |
1
58
事件实际上只是一个“添加”操作和一个“删除”操作。您不能获取该值,不能设置该值,也不能调用该值-您可以为该事件订阅一个处理程序(
类场事件 在C(不指定添加/删除位)中,隐藏这个-它们创建一个委托类型的变量 和 一个事件。事件的添加/删除实现只使用变量跟踪订阅服务器。 在类内部,您引用变量(这样您就可以获取当前订阅的委托、执行它们等),在类外部,您引用事件本身(所以只有添加/删除功能)。 类似于字段的事件的替代方法是显式实现添加/删除自己,例如
见 my article on events 更多信息。
当然是事件发布者
可以
还可以提供更多信息-您可以编写类似
|
![]() |
2
14
您可以使用非常简单的方法来避免重复订阅事件。 可以使用以下两种方法之一:
|
![]() |
3
3
答案如下:
|
![]() |
4
2
这里有一个稍微不同的问题
作为事件的外部使用者,您只能执行两个操作
事件的空或非空与这两个操作无关。为什么要运行一个不提供可感知值的测试? |
![]() |
5
1
这是使用“event”关键字时的规则。创建事件时,将与委托的外部类交互限制为“订阅/取消订阅”关系,这包括继承情况。记住,事件本质上是一个属性,但对于方法调用,它实际上不是对象本身,因此实际上它看起来更像这样:
|
![]() |
6
0
你必须从基类那里做。这就是你这么做的确切原因:
无法从派生类访问事件。另外,您应该使该方法成为虚拟的,以便它可以在派生类中被重写。 |
![]() |
7
0
事件的发布者仅隐式重载
如果我们想验证订阅服务器类中是否订阅了特定事件,那么当事件是订阅服务器时,更好的发布服务器将在其类中设置一个标志,当事件是订阅服务器时清除该标志。 如果订阅服务器可以访问发布服务器的标志,则通过检查标志值很容易识别特定事件是否为订阅服务器。 |
![]() |
Pikachu620 · 可以对事件列表进行排序吗? 2 年前 |
![]() |
ManP22 · 我想在同一次单击中调用两个常量 2 年前 |
![]() |
Pepe · 如何在JavaScript中的函数之间恢复/传递事件对象 2 年前 |