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. ||
- 4. sjlj vs dwarf vs seh有什麼區別?
- 5. 差Vs的AddHandler
- 6. AddHandler和AddType在htaccess文件中有什麼區別
- 7. 有什麼區別
- 8. npm 3 vs Bower有什麼區別?
- 9. python:var vs. self.var(有什麼區別?)
- 10. javax.ws.rs.core.Cookie vs javax.ws.rs.core.NewCookie,有什麼區別?
- 11. log4j RollingFileAppender vs DailyRollingFileAppender有什麼區別
- 12. 'while(true)`vs`while(\ true)`有什麼區別?
- 13. .tar vs .tgz ...有什麼區別?
- 14. 果醬vs鮑爾,有什麼區別?
- 15. img.height vs img.style.height有什麼區別?
- 16. Application.FileDialog vs GetOpenFilename:有什麼區別?
- 17. IntegratedWindowsAuthentication vs Negotiate有什麼區別?
- 18. CreateThread vs PsCreateSystemThread - 有什麼區別?
- 19. getHeight()vs getPreferredHeight()有什麼區別
- 20. IIFE:var vs this - 有什麼區別嗎?
- 21. _.each vs _.map有什麼區別?
- 22. &vs @ and = in angularJS有什麼區別
- 23. 有什麼區別? #header.h1 Vs:#header h1
- 24. $ .children()vs $ .children('className')有什麼區別?
- 25. NSTimer.CreateScheduledTimer vs CreateTimer - 有什麼區別?
- 26. Knockout.js observableArray vs Backbone.js Collection - 有什麼區別?
- 27. WPF Panel.Children vs Panel.InternalChildren - 有什麼區別?
- 28. Backbone.js vs Pusherapp - 有什麼區別?
- 29. webpack「--watch」vs「--hot」:有什麼區別?
- 30. android 2.3 vs android 4.0有什麼區別
換句話說,使用** ** 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