2015-09-24 67 views
0

我目前正在將一些代碼從VB6.0遷移到VB.NET,並且已經注意到了一個問題。我是相當新的VB6.0,我現在意識到,多個值可以通過下面的返回:VB返回值

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

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

test = 0 

End Function 

當我調試,我可以看到,傳遞的參數現在被更新。然而,我的問題是,VB.NET似乎沒有這樣做。我怎樣才能在VB.NET中做到這一點?

任何意見,將不勝感激。

回答

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 
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語句來返回值。 (請注意,它將退出函數,該函數不會將函數名賦值)