コンストラクター内のラムダ式では、'ReadOnly' 変数を代入のターゲットにすることはできません

ラムダ式から 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 内のパラメーター TestByVal パラメーターに変更します。

    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  
    

関連項目