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

Você se referiu a uma variável ReadOnly dentro de uma expressão lambda, o que não é permitido. O código a seguir causa esse erro enviando a ReadOnly variável m como o argumento para um parâmetro ByRef.

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 do erro: BC36602

Para corrigir este erro

  • Se possível, altere o parâmetro n na função Test para um parâmetro ByVal, conforme mostrado no 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  
    
  • Atribua a ReadOnly variável m a uma variável local no construtor e use a variável local no lugar de m, conforme mostrado no 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  
    

Confira também