Partilhar via


a variável 'ReadOnly' não pode ser o destino de uma atribuição em uma expressão lambda dentro de um construtor

Chamado um ReadOnly variável de dentro de uma expressão lambda, o que não é permitida. O código a seguir causa esse erro, enviando a ReadOnly variável m sistema autônomo o argumento para um ByRef parâmetro.

Class Class1

    ReadOnly m As Integer

    Sub New()
        ' The use of m triggers the error.
        Dim f = Function() Test(m)
    End Sub

    Function Test(ByRef n As Integer) As String
    End Function

End Class

ID de erro: BC36602

Para corrigir este erro

  • Se possível, altere o parâmetro n na função Test para um ByVal parâmetro, sistema autônomo mostra o código a seguir.

    Class Class1Fix1
    
        ReadOnly m As Integer
    
        Sub New()
            Dim f = Function() Test(m)
        End Sub
    
        Function Test(ByVal n As Integer) As String
        End Function
    
    End Class
    

Para corrigir este erro

  • Atribuir o ReadOnly variável m para uma variável local no construtor e usar a variável local no lugar de m, sistema autônomo mostra o código a seguir.

    Class Class1Fix2
         ReadOnly m As Integer
    
        Sub New()
            Dim temp = m
            Dim f = Function() Test(temp)
        End Sub
    
        Function Test(ByRef n As Integer) As String
        End Function
    
    End Class
    

Consulte também

Conceitos

Expressões Lambda

Referência

ReadOnly (Visual Basic)

Usando Construtores e Destrutores