最近,我进入了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))


这应该与我以前的方法完全一样,不是吗?还是我错过了什么?

最佳答案

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

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


运行此代码时,将产生三行!

关于vb.net - Lambda语法和VB.NET地址之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27398672/

10-10 14:12
查看更多