我正在上的大学课程要求使用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表达式。
答案 0 :(得分:1)
要编译该代码,您必须具有Option Strict Off
。您应该立即解决。您的字段被隐式键入为Object
,并且您不能调用Object
引用。
使用Option Strict On
,您将被迫为该字段指定类型。明显的类型是Action
:
Public mover As Action = Sub()
End Sub
由于Action
是委托类型,因此可以像方法一样调用它。
您应该在项目属性以及IDE选项中打开Option Strict On
,以便在以后的所有项目中默认为On
。