VB返回值

时间:2015-09-24 14:08:03

标签: vb.net parameters vb6 vb6-migration

我目前正在将一些代码从VB6.0迁移到VB.NET,并注意到了一个问题。我对VB6.0还不熟悉,现在我知道可以通过以下方式返回多个值:

Function test(str1 As String, str2 As String) As Long

str1 = "Hello World1"
str2 = "Hello World2"

test = 0

End Function

当我调试时,我可以看到传递的参数现在已更新。但是我的问题是VB.NET似乎没有这样做。我怎么能在VB.NET中做到这一点?

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:6)

在VB6中,默认情况下,参数通过引用 传递 ,而在VB.NET中,它们通过值传递 默认情况下。这解释了为什么它的行为不同。如果您想保留旧行为并通过引用传递参数,则需要明确说明(请注意其他ByRef个关键字):

Function test(ByRef str1 As String, ByRef str2 As String) As Long

str1 = "Hello World1"
str2 = "Hello World2"

test = 0 'don't forget to migrate this line to VB.NET as well

End Function

答案 1 :(得分:5)

在VB.NET中,传递参数的默认方式是按值(ByVal)而不是按引用(ByRef)。要获得VB 6行为,您需要创建参数ByRef

Function test(ByRef str1 As String, ByRef str2 As String) As Long

  str1 = "Hello World1"
  str2 = "Hello World2"

  Return 0

End Function

在VB 6中,默认值是引用,因为按值传递参数作为需要复制的对象比较昂贵。在VB.NET中,默认值是值,因为不需要复制对象,而是将对象的引用作为参数值传递。

在VB.NET中,您还可以使用Return语句来返回值。 (请注意,它将退出该函数,该函数将值分配给函数名称。)