C# VB6中具有默认值的可选参数
我试图在VB6中重新创建以下C代码:C# VB6中具有默认值的可选参数,c#,vb6,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
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吗?还是只需要在方法开始时这样做
谢谢哇,这让我想起了。。我能问一下你为什么要在技术上向后转换吗 无论如何,您可以使用可选关键字:
Private Sub ChangeTab(ByVal tabName As String, Optional ByVal clearAll As Boolean = True)
您的问题正在使用ByVal。从内存来看,VB6中的所有内容都是ByVal,除非明确说明
编辑:我错了。默认值为ByRef。。好久不见了 哇,这让我回想起。。我能问一下你为什么要在技术上向后转换吗 无论如何,您可以使用可选关键字:
Private Sub ChangeTab(ByVal tabName As String, Optional ByVal clearAll As Boolean = True)
您的问题正在使用ByVal。从内存来看,VB6中的所有内容都是ByVal,除非明确说明
编辑:我错了。默认值为ByRef。。好久不见了 试试看:
Private Sub ChangeTab(ByVal tabName As String, Optional clearAll As Boolean = True)
Call Yadyyada(tabName)
If clearAll Then
DoMoreStuff
End If
End Sub
请参见尝试:
Private Sub ChangeTab(ByVal tabName As String, Optional clearAll As Boolean = True)
Call Yadyyada(tabName)
If clearAll Then
DoMoreStuff
End If
End Sub
请参见是的,您可以执行与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是的,您可以执行与C中相同的操作
Private Sub ChangeTab(ByVal tabName As String, Optional ByVal clearAll As Boolean = True)
Debug.Print "Value for clearAll=" & clearAll
End Sub
打电话给
ChangeTab("AName")
将打印为真您可以像这样使用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
您可以像这样使用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
我试着在单词“As Boolean”后面加上=True,但是我得到了一个编译error@JMK:您确定编译错误与其他内容无关吗?例如,VB6中的YADYADABATNAME语句不正确。我曾尝试在单词“As Boolean”后放置=True,但得到了编译结果error@JMK:您确定编译错误与其他内容无关吗?例如,VB6中的YADYADABDATANAME语句不正确;缺少的是事实。但是,是的,怀旧之旅!clearAll可能应该是显式的ByVal;默认值是ByRef iircYeah我更新了我的答案。我被这件事吓坏了,忘了把OP版本的实际问题包括在内!非常感谢!不是真的向后转换,只是尝试用一种语言做一些我知道如何用另一种语言做的事情!他有选择权;缺少的是事实。但是,是的,怀旧之旅!clearAll可能应该是显式的ByVal;默认值是ByRef iircYeah我更新了我的答案。我被这件事吓坏了,忘了把OP版本的实际问题包括在内!非常感谢!不是真的向后转换,只是尝试用一种语言做一些我知道如何用另一种语言做的事情!这行不通。IsMissing不适用于VB6中的布尔值。看,这行不通。IsMissing不适用于VB6中的布尔值。请参阅:+1以获取文档链接。为什么没有人读这些文档?@MarkJ:可能是因为现在很难找到VB6的文档。AFAIR,在.NET开始使用之后,VB6文档被从原来的位置删除。新的位置很难找到。我不确定它是否链接到主msdn站点上的任何位置。我找不到它。我只找到了迁移说明等,我不得不用谷歌搜索了很多。现在搜索结果大多是VB.NET。如果名称相似,则很难对其进行筛选。+1用于链接到文档。为什么没有人读这些文档?@MarkJ:可能是因为现在很难找到VB6的文档。AFAIR,在.NET开始使用之后,VB6文档被从原来的位置删除。新的位置很难找到。我不确定它是否链接到主msdn站点上的任何位置。我找不到它。我只找到了迁移说明等,我不得不用谷歌搜索了很多。现在搜索结果大多是VB.NET。使用相似的名称很难过滤它们。