[Visual C#]
public ICommand MyCommand
{
get
{
if (this.myCommand == null)
{
this.myCommand = new RelayCommand(this.ShowMyCommand);
}
return this.myCommand;
}
}
private void ShowMyCommand(object param)
{
...
}
Run Code Online (Sandbox Code Playgroud)
此代码工作正常,但当我将其转换为Visual Basic时:
[Visual Basic]
Private _myCommand As RelayCommand
Public ReadOnly Property MyCommand As ICommand
Get
If Me._myCommand Is Nothing Then
Me._myCommand = New RelayCommand(Me.ShowMyCommand)
End If
Return Me._myCommand
End Get
End Property
Private Sub ShowMyCommand(ByVal param As Object)
...
End Sub
Run Code Online (Sandbox Code Playgroud)
我收到错误:
错误3未为'Private Sub ShowMyCommand(param As Object)'的参数'param'指定参数.
有任何想法吗?我只是盲目转换所以我不明白该项目的作用,我只是转换它.
对于VB来说,我有点茫然,但根据我所知,你需要在方法名前加上关键字AddressOf,以便它可以作为事件的方法组使用.
以下行:
Me._myCommand = New RelayCommand(Me.ShowMyCommand)
Run Code Online (Sandbox Code Playgroud)
需要写成:
Me._myCommand = New RelayCommand(AddressOf Me.ShowMyCommand)
Run Code Online (Sandbox Code Playgroud)
错误消息是因为编译器正在尝试编译对该方法的调用,因此缺少其参数的参数.