2
키워드와 연결된 모든 처리기를 "제거"하기 때문에 WithEvents
변수를 Nothing
으로 설정하면 Destuctor
에 설정됩니다. 이 클래스는 파생 클래스에도 동일한 효과가 있습니까?파생 클래스의 RemoveHandlers
Class A
Protected WithEvents _Foo as Button
Private Sub _Foo_Click Handles _Foo.Click
' ... some Click action '
End Sub
Public Sub Dispose(disposing as Boolean)
If disposing then _Foo = Nothing ' remove handler _Foo_Click '
End Sub
End Class
Class B
Inherits A
Private Sub _Foo_Move Handles _Foo.Move
' ... some Move action '
End Sub
' ????? will or NOT remove OR handler _Foo_Move the base Dispose??'
Public Overrides Sub Dispose(disposing as Boolean)
'If disposing then _Foo = Nothing '
MyBase.Dispose(disposing)
End Sub
End Class
ps. 더 명확하게하기 위해 _Foo
버튼이 외부에서 제공되어 A
클래스보다 더 오래 살고 있다고 가정합니다.
+1 Dispose에서 와이어링 이벤트의 중요성을 관찰합니다. Minor nit : WithEvents를 "foo"로 선언하면 "foo"라는 속성과 "_foo"라는 필드가 생성됩니다. "_foo"라는 것을 호출하면 필드가 "__foo"가 될 것이지만 속성 이름 "_foo"는 배킹 필드 이름처럼 보일 것입니다. – supercat