Freigeben über


Die 'ReadOnly'-Variable kann nicht das Ziel einer Zuweisung in einem Lambda-Ausdruck innerhalb eines Konstruktors sein

Aktualisiert: November 2007

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

Sie haben innerhalb eines Lambdaausdrucks auf eine ReadOnly-Variable verwiesen. Dies ist nicht zulässig. Der folgende Code verursacht diesen Fehler, indem er die ReadOnly-Variable m als Argument an einen ByRef-Parameter sendet.

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

Fehler-ID: BC36602

So beheben Sie diesen Fehler

  • Ändern Sie, wenn möglich, den Parameter n in der Funktion Test in einen ByVal-Parameter, wie im folgenden Code gezeigt.

    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
    

So beheben Sie diesen Fehler

  • Weisen Sie die ReadOnly-Variable m einer lokalen Variable im Konstruktor zu, und verwenden Sie die lokale Variable anstelle von m, wie in folgendem Code gezeigt.

    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
    

Siehe auch

Konzepte

Lambda-Ausdrücke

Referenz

ReadOnly (Visual Basic)

Verwenden von Konstruktoren und Destruktoren