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