BC30577: o operando 'AddressOf' deve ser o nome de um método (sem parênteses)

O AddressOf operador cria uma instância de delegado de procedimento que faz referência a um procedimento específico. A sintaxe é a seguinte:

AddressOf procedurename

Você inseriu parênteses ao redor do argumento a seguir AddressOf, em que nenhum deles é necessário.

ID do erro: BC30577

Exemplo

O exemplo a seguir gera bc30577:

Public Sub CountZeroToTen()
    For i = 0 To 10
        Console.WriteLine($"Counted: {i}")
        Threading.Thread.Sleep(500)
    Next
End Sub

Sub Main()
    ' Any of the following two lines generates bc30577.
    'Dim t As New Threading.Thread(AddressOf(CountZeroToTen))
    'Dim t As New Threading.Thread(AddressOf CountZeroToTen())
    t.Start()
End Sub

Para corrigir este erro

  1. Remova os parênteses em torno do argumento a seguir AddressOf , conforme mostrado no exemplo a seguir:

    Public Sub CountZeroToTen()
        For i = 0 To 10
            Console.WriteLine($"Counted: {i}")
            Threading.Thread.Sleep(500)
        Next
    End Sub
    
    Sub Main()
        Dim t As New Threading.Thread(AddressOf CountZeroToTen)
        t.Start()
    End Sub
    
  2. Verifique se o argumento é um nome de método.

Consulte também