VB.net byval和byref
概述
byval是將實參所占的內存空間復制一份出來;byref是給實參另起一個別名,就好像是一個人兩個名字。這兩個的區別針對于一般的數據類型,大家都非常的清楚,但是,當用遇到對象類型的變量的時候,要小心了,因為,對象類型的變量里存放的是對象所占內存空間的首地址,此時,無論用byval還是byref,對該對象的內部成員的操作都是針對同一塊內存空間。
實例
1、創建class1類,用戶參數的傳遞用
Public Class Class1
'變量
Private _name As String
'屬性
Property name() As String
'讀操作
Get
Return _name
End Get
'寫操作
Set(ByVal value As String)
_name = value
End Set
End Property
End Class
2、創建class2類,用于對參數的處理
Public Class Class2
Public Sub tryd(ByRef classx As Class1)
'通過形參修改 name
classx.name = "這個是《形參》操作的地址空間"
End Sub
End Class
3、新建控制臺應用程序,代碼如下:
Module Module1
Sub Main()
'定義class1類對象 進行參數的傳遞
Dim s As New Class1
s.name = "這個是《實參》操作的地址空間!"
'定義class2類 邏輯運算
Dim X As New Class2
'執行參數
X.tryd(s)
'輸出
Console.WriteLine(s.name)
'暫停畫面
Console.ReadLine()
End Sub
End Module
運行3執行的結果如下圖
byref中的實參和形參是一個人兩個名稱嗎?
1、class1類和上面的一樣
2、創建class2類,用來進行邏輯運算
Public Class Class2
Public Sub tryd(ByRef classx As Class1)
'形參的對象中創建新的class1
Dim y As New Class1
'賦值
y.name = "一個人,兩個名稱"
'給形參賦值
classx = y
End Sub
End Class
3、新建控制臺應用程序
Module Module1
Sub Main()
'定義class1類對象 進行參數的傳遞
Dim s As New Class1
'賦值
s.name = "不是同一個人,兩個名稱!"
'定義class2類 邏輯運算
Dim X As New Class2
'執行
X.tryd(s)
'輸出實參的name屬性
Console.WriteLine(s.name)
'暫停畫面
Console.ReadLine()
End Sub
End Module
執行3的結果如下圖
總結
以上是生活随笔為你收集整理的VB.net byval和byref的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入学习SAP UI5框架代码系列之一:
- 下一篇: 农商和农村信用社是一个银行吗