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


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

Обновлен: Ноябрь 2007

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

Переменная ReadOnly употреблена в лямбда-выражении, что не разрешено. Следующий код вызывает эту ошибку, отправляя ReadOnly переменную m как аргумент в параметр 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

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

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

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

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

    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
    

См. также

Основные понятия

Лямбда-выражения

Ссылки

ReadOnly (Visual Basic)

Использование конструкторов и деструкторов