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