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)