VB.NET Comportamento de palavra -chave WithEvents - Restrição do compilador VB.NET?
-
20-08-2019 - |
Pergunta
Estou trabalhando para me familiarizar com o C# como sou com o VB.NET (o idioma usado no meu local de trabalho). Uma das melhores coisas sobre o processo de aprendizado é que, ao aprender sobre o outro idioma, você tende a aprender mais sobre seu idioma principal-um pouco de perguntas como este pop-up:
De acordo com as fontes que encontrei e experiência passada, um campo em vb.net que é declarado como Com eventos é capaz de aumentar os eventos. Eu entendo que C# não tem um equivalente direto-mas minha pergunta é: campos sem Essa palavra -chave no vb.net não pode aumentar os eventos, existe uma maneira de criar esse mesmo comportamento em C#? O compilador VB simplesmente bloqueia esses objetos de ter seus eventos tratados (ao mesmo tempo que lhes permitem aumentar os eventos como de costume)?
Eu só estou curioso; Eu não tenho nenhum aplicativo específico para a pergunta ...
Solução
Omitir eventos não impedem os membros de aumentar os eventos. Isso apenas impede que você use a palavra -chave 'Handles' em seus eventos.
Aqui está um uso típico de eventos:
Class C1
Public WithEvents ev As New EventThrower()
Public Sub catcher() Handles ev.event
Debug.print("Event")
End Sub
End Class
Aqui está uma classe que não usa eventos e é aproximadamente equivalente. Demonstra por que os eventos são bastante úteis:
Class C2
Private _ev As EventThrower
Public Property ev() As EventThrower
Get
Return _ev
End Get
Set(ByVal value As EventThrower)
If _ev IsNot Nothing Then
removehandler _ev.event, addressof catcher
End If
_ev = value
If _ev IsNot Nothing Then
addhandler _ev.event, addressof catcher
End If
End Set
End Property
Public Sub New()
ev = New EventThrower()
End Sub
Public Sub catcher()
Debug.print("Event")
End Sub
End Class