Zmienna "ReadOnly" nie może być celem przypisania w wyrażeniu lambda wewnątrz konstruktora

Odwołujesz się do zmiennej ReadOnly z poziomu wyrażenia lambda, które nie jest dozwolone. Poniższy kod powoduje ten błąd, wysyłając zmienną ReadOnly m jako argument do parametru 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  

Identyfikator błędu: BC36602

Aby poprawić ten błąd

  • Jeśli to możliwe, zmień parametr n w funkcji Test na ByVal parametr, jak pokazano w poniższym kodzie.

    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  
    
  • ReadOnly Przypisz zmienną m lokalną do zmiennej lokalnej w konstruktorze i użyj zmiennej lokalnej zamiast m, jak pokazano w poniższym kodzie.

    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  
    

Zobacz też