【问题标题】:Lambda expression throws System.MissingMemberExceptionLambda 表达式抛出 System.MissingMemberException
【发布时间】:2016-03-10 09:28:43
【问题描述】:

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

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

当从另一个类调用 this 时

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(Of Integer,Integer)'.

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

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

不能在其他模块和类中添加 lambda 函数吗?

【问题讨论】:

  • 移除模块但保留 LAMBDAS 类是否有效?

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


【解决方案1】:

我知道这是一篇旧帖子,但我遇到了类似的问题,这让我在修复它之前挠了一个小时左右。

如果您在调试器中检查 add1 的类型,您将看到它是一个对象而不是 lambda 函数,因此编译器会自动认为您正在尝试索引默认属性而不是运行一段代码。

要解决它,您可以执行以下操作:

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

【讨论】:

    猜你喜欢
    • 2014-10-19
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2020-06-28
    相关资源
    最近更新 更多