【发布时间】:2013-10-31 13:19:15
【问题描述】:
请看下面的代码:
Public Class TypeTest
Public variable1 As String
End Class
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim t1 As TypeTest = New TypeTest
Test(t1)
MsgBox(t1.variable1)
End Sub
Public Sub Test(ByVal t1 As TypeTest)
t1.Variable1 = "Thursday"
End Sub
End Class
form_load 中的消息框打印:Thursday,表示对象(TypeTest)是通过引用传递的。 在名为 Test 的函数中使用 ByVal 和 ByRef 的 t1 争论有什么区别。
【问题讨论】:
-
默认值为 ByVal - 表示原始变量的副本。如果需要引用原始变量,请使用 ByRef。
-
@Tony,VBA 上的默认设置是 ByRef,您确定 ByVal 是 vb.net 上的默认设置吗?
-
@jacouh 是的,在 .NET 中,默认值为 ByVal,这与在 COM 开发中为 ByRef 不同。微软做出改变是因为 ByVal 更安全。
标签: vb.net