dan*_*983 0 vb.net vb6 parameters 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
Run Code Online (Sandbox Code Playgroud)
当我调试时,我可以看到传递的参数现在已更新.但是我的问题是VB.NET似乎没有这样做.我怎么能在VB.NET中做到这一点?
任何意见,将不胜感激.
在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
Run Code Online (Sandbox Code Playgroud)
在VB.NET中,传递参数的默认方式是value(ByVal)而不是reference(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
Run Code Online (Sandbox Code Playgroud)
在VB 6中,默认值是引用,因为按值传递参数作为需要复制的对象更加昂贵.在VB.NET中,默认值是值,因为不需要复制对象,而是将对象的引用作为参数值传递.
在VB.NET中,您还Return可以使用可用于返回值的语句.(请注意,它将退出该函数,该函数将值赋值给函数名称.)