La variabile 'ReadOnly' non può essere la destinazione di un'assegnazione in un'espressione lambda all'interno di un costruttore

Aggiornamento: novembre 2007

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

È stato fatto riferimento a una variabile ReadOnly dall'interno di un'espressione lambda ma tale operazione non è consentita. Nel codice seguente viene generato questo errore inviando la variabile ReadOnlym come argomento a un parametro 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 errore: BC36602

Per correggere l'errore

  • Se possibile, modificare il parametro n nella funzione Test con un parametro ByVal, come mostrato nel codice seguente.

    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
    

Per correggere l'errore

  • Assegnare la variabile ReadOnlym a una variabile locale nel costruttore e utilizzare la variabile locale al posto di m, come mostrato nel codice seguente.

    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
    

Vedere anche

Concetti

Espressioni lambda

Riferimenti

ReadOnly (Visual Basic)

Utilizzo di costruttori e distruttori