1
A
回答
3
事件处理程序连接时的确切区别,以及它周围发生了什么。例如,当使用WithEvents
和Handles
时,编译器将发出代码,该代码包含对包含公开事件的实例的变量的访问,并且在属性设置器中,它将从先前实例中分离事件处理程序(如果有的话) ,然后将事件处理程序附加到新实例(如果有)。
这意味着,如果你把下面的代码样本中,获得mm
将表现不同:
' WithEvents approach '
Dim WithEvents mm As SomeClass
Sub Main()
mm = New SomeClass()
Dim nn As SomeClass = mm
End Sub
' Other approach '
Dim mm As SomeClass
Sub Main()
mm = New SomeClass()
Dim nn As SomeClass = mm
End Sub
在WithEvents
情况下,mm = New SomeClass()
实际上将调用属性setter,并Dim nn As SomeClass = mm
将获取的价值来自属性获取器,而在第二种情况下,将不会为该值创建属性,但代码将直接访问该字段。
0
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'this
AddHandler Button2.Click, AddressOf Button2_Click
'now Button2_Click looks like this
'Private Sub Button2_Click(ByVal sender As System.Object, _
'ByVal e As System.EventArgs) Handles Button2.Click
End Sub
+2
。你只会忘记分解器的行为,Handles也会从按钮中移除处理器。 – serhio 2010-01-18 23:56:22
相关问题
- 1. Handles vs. AddHandler
- 2. Seq.iter vs - 有什么区别?
- 3. 差Vs的AddHandler
- 4. sjlj vs dwarf vs seh有什么区别?
- 5. AddHandler和AddType在htaccess文件中有什么区别
- 6. 有什么区别
- 7. Application.FileDialog vs GetOpenFilename:有什么区别?
- 8. new XMLHttpRequest()vs new XMLHttpRequest - 有什么区别?
- 9. JSONLoader vs ObjectLoader,有什么区别? (three.js)
- 10. 'while(true)`vs`while(\ true)`有什么区别?
- 11. NSTimer.CreateScheduledTimer vs CreateTimer - 有什么区别?
- 12. javax.ws.rs.core.Cookie vs javax.ws.rs.core.NewCookie,有什么区别?
- 13. 有什么区别? #header.h1 Vs:#header h1
- 14. Handler vs runOnUiThread有什么区别?
- 15. Knockout.js observableArray vs Backbone.js Collection - 有什么区别?
- 16. IntegratedWindowsAuthentication vs Negotiate有什么区别?
- 17. img.height vs img.style.height有什么区别?
- 18. log4j RollingFileAppender vs DailyRollingFileAppender有什么区别
- 19. boost :: static_pointer_cast vs boost :: shared_static_cast有什么区别?
- 20. UnityEngine.Events.Unityaction vs System.Action有什么区别?
- 21. WPF Panel.Children vs Panel.InternalChildren - 有什么区别?
- 22. XElement Nodes()vs Elements()有什么区别?
- 23. AppBarLayout vs toolbar有什么区别?
- 24. DecodePixelWidth Vs.有什么区别? ScaleTransform?
- 25. ResultSetExtractor vs Rowmapper有什么区别?
- 26. const_cast VS可变吗?有什么区别?
- 27. JIT vs NGen - 有什么区别?
- 28. getHeight()vs getPreferredHeight()有什么区别
- 29. &vs @ and = in angularJS有什么区别
- 30. .tar vs .tgz ...有什么区别?
换句话说,使用** ** AddHanlder是最优的,比方说,*资源*和速度,** ** WITHEVENTS的代码*可读性*?.. – serhio 2010-01-18 11:38:10
而有关分离什么事件处理程序什么时候对象没有更多的引用呢? – serhio 2010-01-18 11:43:51
@serhio:我认为增加使用'WithEvents'的可读性可能会引起争议,但总的来说,我认为你是对的。 'WithEvents'还具有在将字段设置为'Nothing'时分离事件处理程序的机制,这很好(如果您未能分离事件处理程序,则会阻止对象被垃圾收集)。 – 2010-01-18 11:44:54