lambda语法和VB.NET地址之间的区别

时间:2014-12-10 10:29:18

标签: vb.net lambda

我最近进入了VB.NET的欢乐世界,但对于我的生活,我似乎无法弄清楚为什么以下不起作用。

当我在这里写这段代码时,一切都很好:

MyNavigationCommand = New RelayCommand(AddressOf Navigate)

Private Sub Navigate()
    Navigator.NavigateTo(NavigationRoutes.DetailScreen)
End Sub

但是,当我尝试使用lambda语法完全相同时,当我单击触发命令的按钮时,我的lambda中的代码不会被命中。

以下一行不起作用:

MyNavigationCommand = New RelayCommand(Sub() Navigator.NavigateTo(NavigationRoutes.DetailScreen))

这应该与我之前的方法完全相同,不应该吗?或者我错过了什么?

1 个答案:

答案 0 :(得分:0)

我不确定你出了什么问题。这是我编写的代码,用于测试:

Sub Main

    Dim MyNavigationCommand = New RelayCommand(AddressOf Navigate)
    Dim MyNavigationCommand2 = New RelayCommand(Sub() Console.WriteLine("!"))

    Navigate
    MyNavigationCommand
    MyNavigationCommand2

End Sub

Public Delegate Sub RelayCommand

Public Sub Navigate()
    Console.WriteLine("!")
End Sub

运行时,此代码会生成三行!