ByVal (Visual Basic)
指定按值传递参数,以便被调用的过程或属性无法更改调用代码中参数基础的变量的值。 如果未指定修饰符,则 ByVal 为默认值。
注意
由于它是默认值,因此不必在方法签名中显式指定 ByVal
关键字。 它通常会产生干扰代码,经常导致非默认的 ByRef
关键字被忽略。
注解
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 New Class1()
c1.Field = 5
Console.WriteLine(c1.Field)
' Output: 5
' ByVal does not prevent changing the value of a field or property.
ChangeFieldValue(c1)
Console.WriteLine(c1.Field)
' Output: 500
' ByVal does prevent changing the value of c1 itself.
ChangeClassReference(c1)
Console.WriteLine(c1.Field)
' Output: 500
Console.ReadKey()
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