Прочитать на английском

Поделиться через


Переменная ReadOnly не может быть целевым объектом назначения в лямбда-выражении внутри конструктора.

Указана ссылка на переменную ReadOnly в лямбда-выражении, что не разрешено. Следующий код приводит к возникновению этой ошибки, отправляя переменную ReadOnlym в качестве аргумента в параметр ByRef .

VB
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  

Идентификатор ошибки: BC36602

Исправление ошибки

  • Если это возможно, измените параметр n в функции Test на параметр ByVal , как показано в следующем коде.

    VB
    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  
    
  • Назначьте переменную ReadOnlym локальной переменной в конструкторе и используйте локальную переменную вместо m, как показано в следующем коде.

    VB
    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  
    

См. также