在构造函数内的 lambda 表达式中,“ReadOnly”变量不能作为赋值的目标

更新:2007 年 11 月

您在 lambda 表达式内引用了 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

**错误 ID:**BC36602

更正此错误

  • 如果可能,将函数 Test 中的参数 n 更改为 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
    

请参见

概念

lambda 表达式

参考

ReadOnly (Visual Basic)

使用构造函数和析构函数