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

你已从 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

更正此错误

  • 如果可能,将函数 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  
    

请参阅