VB6中的引用傳遞 與 VB.NET中的引用傳遞的區別

首先注意一點,在VB6中缺省參數傳遞的方式是:引用傳遞,而在VB.NET中缺省參數傳遞的方式是:值傳遞。spa

而後咱們看下面VB6中的引用傳遞與VB.NET中的引用傳遞的對比。3d

 

VB6中的引用傳遞code

Private Sub CommandButton1_Click()

ChangeName CommandButton1.caption

End Sub

Private Sub ChangeName(caption As String)

caption = "NameHasBeenChanged!"

End Sub

image

點擊Button以後orm

image

 

VB.NET中的引用傳遞對象

Public Class Form1 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
        ChangeName(Button1.Text) 
    End Sub 

    Private Sub ChangeName(ByRef caption As String) 
        caption = "NameHasBeenChanged!" 
    End Sub 

End Class
 

image    

點擊Button以後blog

image

 

經過以上的對比發現:VB6中的引用傳遞與VB.NET中的引用傳遞的效果存在很大差別:一樣是將Button的屬性做爲參數以引用傳遞的方式傳給方法體,在方法體中進行更改,但獲得的效果卻徹底不一樣。在VB6中Button的Caption沒有被更改,在VB.NET中Button的Text被更改了。get

在VB6中,當將對象的屬性以引用傳遞的方式傳遞時,對象的屬性的值不會被更改;可是在VB.NET中,將對象的屬性以引用方式進行傳遞時,該對象的屬性的值將會被更改。it

這一點在VB6升級到VB.NET的項目中應該特別注意,不少Bug都源於此。io

相關文章
相關標籤/搜索