|
1
6
没有魔力,隐藏在raiseEvent下的代码完全按照您期望的方式工作,它迭代一组处理程序,并执行每个处理程序。 检查是否有任何处理程序的开销都很小,不用担心。 如果你 真实的 问题是“为了节省时间,我应该在引发事件之前检查事件是否有处理程序?”…那么答案是“不”,这样做你什么也得不到。 另外,不要担心优化,除非你需要(看这个 Wikipedia entry 看看为什么。
重新呼叫
是的,这与您如何在C中引发事件有关,在C中,您在引发事件之前检查处理程序的存在性。 例如。:
顺便说一句,实验很好。) |
|
2
7
我自己的答案: 在vb.net中,如果没有设置用于侦听事件的处理程序,则事件不会激发。 我做了一个小实验,在这个实验中,引发事件的代码将传递一个函数的结果,这个函数只在设置了一个事件处理程序来处理事件时执行。
换句话说,我是说
|
|
|
3
1
可能会有少量的开销,但我不担心。当然,实际行动将是性能驱动因素。 附带说明:在C中不使用处理程序引发事件实际上会导致引发异常。vb.net没有此问题:) |
|
|
4
0
在C中,如果不检查事件是否为空,并且没有注册的处理程序,则会得到一个NullReferenceException。 |