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 ...

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top