Compartir a través de


BC30577: El operando "AddressOf" debe ser el nombre de un método (sin paréntesis)

El operador AddressOf crea una instancia de delegado de procedimiento que hace referencia a un procedimiento específico. La sintaxis es la siguiente:

AddressOf procedurename

Insertó paréntesis alrededor del argumento que sigue a AddressOf donde no se necesita ninguno.

Identificador de error: BC30577

Ejemplo

En el ejemplo siguiente, se genera el error 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 corregir este error

  1. Quite los paréntesis alrededor del argumento que sigue a AddressOf, tal como se muestra en el ejemplo siguiente:

    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. Asegúrese de que el argumento es un nombre de método.

Consulte también