ByVal (Visual Basic)

指定按如下方式传递参数:被调用的过程或属性不能更改调用它的代码中参数下面的变量的值。

备注

ByVal 修饰符可用于下面的上下文中:

Declare 语句

Function 语句 (Visual Basic)

Operator 语句

Property 语句

Sub 语句 (Visual Basic)

示例

下面的示例演示如何将 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(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

请参见

概念

通过值和通过引用传递参数 (Visual Basic)

其他资源

关键字 (Visual Basic)