如何在VB.NET中实现Lambda表达式(错误:表达式不是方法)

时间:2020-10-15 13:57:48

标签: vb.net lambda

我正在上的大学课程要求使用VB.NET编程

我正在使用VDE,并尝试实现具有lambda字段的“ Entity”类。我一直用来尝试实现此目的的资源是: https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/procedures/lambda-expressions 我想补充一点,我是VB开发的新手。

Public Class Entity
    Public entityHandler As EntityHandeler
    Public mover = Sub()
                   End Sub 'position itterating lambda (SUB)
    Public collision_resolver = Sub(e As Entity)
                                End Sub 'collision behaviour lamda (ENTITY SUB)
    Public renderer = Sub()
                      End Sub 'rendering lambda (SUB)

...

    Private Sub tmrMainLoop_Tick(sender As Object, e As EventArgs) Handles tmrMainLoop.Tick
        For Each entity As Entity In mainHandler.entity_set
            entity.mover() 'Error: Expression is not a method
        Next
    End Sub

我正在努力找出问题出在哪里以及如何正确实现lambda表达式。

1 个答案:

答案 0 :(得分:1)

要编译该代码,您必须具有Option Strict Off。您应该立即解决。您的字段被隐式键入为Object,并且您不能调用Object引用。

使用Option Strict On,您将被迫为该字段指定类型。明显的类型是Action

Public mover As Action = Sub()
                         End Sub

由于Action是委托类型,因此可以像方法一样调用它。

您应该在项目属性以及IDE选项中打开Option Strict On,以便在以后的所有项目中默认为On