Lambda表达式抛出System.MissingMemberException

时间:2016-03-10 09:28:44

标签: .net vb.net lambda windows-phone-8.1

我在类中定义了一个lambda函数,它在运行时抛出System.MissingMemberException。

Module Res         
    Public Class LAMBDAS            
        Public Shared add1 = Function(num As Integer) num + 1    
    End Class    
End Module

当从另一个班级打电话时

Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)
    Dim r = LAMBDAS.add1(12)
End Sub

抛出异常

  

发生了'System.MissingMemberException'类型的异常   MICROSOFT.VISUALBASIC.NI.DLL但未在用户代码中处理

     

其他信息:找不到类型的默认成员   'VB $ AnonymousDelegate_1(整数,整数)'。

但是,如果我将lambda包含在第二个类中,它可以正常工作。

Dim add1 = Function(num As Integer) num + 1
Dim r = add1(12)

是否无法在其他模块和类中添加lambda函数?

1 个答案:

答案 0 :(得分:0)

我知道这是一个很老的帖子,但是我有一个类似的问题让我在修理它之前刮了一个小时左右。

如果你在调试器中检查add1的类型,你会发现它是一个对象而不是一个lambda函数,所以编译器会自动认为你试图索引一个默认属性而不是运行一段代码。

要解决此问题,您可以执行以下操作:

Module Res         
    Public Class LAMBDAS            
        Public Shared add1 As Func(Of Integer) = Function(num As Integer) num + 1    
    End Class    
End Module