ByVal (Visual Basic)
指定按如下方式传递参数:被调用的过程或属性不能更改调用它的代码中参数下面的变量的值。
备注
ByVal 修饰符可用于下面的上下文中:
示例
下面的示例演示如何将 ByVal 形参传入机制与引用类型实参一起使用。 在该示例中,实参是 c1,它是类 Class1 的一个实例。 ByVal 防止过程中的代码更改引用实参 c1 的基础值,但是不保护 c1 的可访问字段和属性。
Module Module1
Sub Main()
' Declare an instance of the class and assign a value to its field.
Dim c1 As Class1 = New Class1()
c1.Field = 5
Console.WriteLine("Original value for the field: " & c1.Field)
' ByVal does not prevent changing the value of a field or property.
ChangeFieldValue(c1)
Console.WriteLine("Value of field after ChangeFieldValue: " & c1.Field)
' ByVal does prevent changing the value of c1 itself.
ChangeClassReference(c1)
Console.WriteLine("Value of field after ChangeClassReference: " & c1.Field)
End Sub
Public Sub ChangeFieldValue(ByVal cls As Class1)
cls.Field = 500
End Sub
Public Sub ChangeClassReference(ByVal cls As Class1)
cls = New Class1()
cls.Field = 1000
End Sub
Public Class Class1
Public Field As Integer
End Class
End Module