可选参数,默认值为VB6

时间:2012-08-08 12:10:41

标签: c# vb6

我正在尝试在VB6中重新创建以下C#代码:

private void ChangeTab(string tabName, bool clearAll = true)
{
    Yadyyada(tabName);

    if (clearAll)
    {
        DoMoreStuff();
    }
}

这是我到目前为止所做的:

Private Sub ChangeTab(ByVal tabName As String, Optional ByVal clearAll As Boolean)

    Yadyyada(tabName)

    If clearAll = True Then
        DoMoreStuff
    End If

End Sub

除了默认参数外,到目前为止一直很好。我可以像在C#中一样在方法签名中为clearAll分配默认值true,还是只需要在方法开头执行此操作?

由于

4 个答案:

答案 0 :(得分:9)

哇,这让我退了回来..我可以问你为什么要倒退技术吗?

无论如何,您可以使用Optional关键字:

Private Sub ChangeTab(ByVal tabName As String, Optional ByVal clearAll As Boolean = True)

您的问题是使用ByVal。从内存来看,除非明确说明,否则VB6中的所有内容都是ByVal。

编辑:我错了。默认是ByRef ..它已经很久了!

答案 1 :(得分:4)

是的,你可以做与C#

相同的事情
Private Sub ChangeTab(ByVal tabName As String, Optional ByVal clearAll As Boolean = True) 
    Debug.Print "Value for clearAll=" & clearAll
End Sub

打电话
ChangeTab("AName")

将打印True

答案 2 :(得分:2)

尝试:

Private Sub ChangeTab(ByVal tabName As String, Optional clearAll As Boolean = True)

    Call Yadyyada(tabName)

    If clearAll Then
        DoMoreStuff
    End If

End Sub

请参阅http://msdn.microsoft.com/en-us/library/aa266305%28v=vs.60%29.aspx

答案 3 :(得分:0)

您可以像这样使用IsMissing功能

Private Sub ChangeTab(ByVal tabName As String, Optional ByVal clearAll As Boolean)

    Yadyyada(tabName)

    If IsMissing(clearAll) = True Or clearAll = True Then
        DoMoreStuff
    End If

End Sub

我的错误!为可选参数设置默认的真值并在代码中检查这是最好的解决方案!

Private Sub ChangeTab(ByVal tabName As String, Optional ByVal clearAll As Boolean = True)

    Yadyyada(tabName)

    If clearAll = True Then
        DoMoreStuff
    End If

End Sub
相关问题