Une variable 'ReadOnly' ne peut pas être la cible d'une assignation dans une expression lambda au sein d'un constructeur

Mise à jour : novembre 2007

'ReadOnly' variable cannot be the target of an assignment in a lambda expression inside a constructor

Vous avez fait référence à une variable ReadOnly à partir d'une expression lambda, ce qui n'est pas autorisé. Le code suivant provoque cette erreur en envoyant la variable mReadOnly comme argument à un paramètre 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 d'erreur : BC36602

Pour corriger cette erreur

  • Si possible, remplacez le paramètre n dans la fonction Test par un paramètre ByVal, comme indiqué dans le code suivant.

    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
    

Pour corriger cette erreur

  • Assignez la variable mReadOnly à une variable locale dans le constructeur et utilisez la variable locale au lieu de m, comme illustré dans le code suivant.

    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
    

Voir aussi

Concepts

Expressions lambda

Référence

ReadOnly (Visual Basic)

Utilisation de constructeurs et de destructeurs