通过值传递参数和通过引用传递参数之间的差异 (Visual Basic)
将一个或多个参数传递给过程时,每个参数对应于调用代码中的一个基础编程元素。通过此基础元素的值或引用它。这称为传递机制。
通过值
通过 值 传递参数指定 ByVal (Visual Basic) 关键字为相应的参数的过程定义。当您使用此传入机制时, Visual Basic 复制该基础编程元素的值到过程中的局部变量。过程代码无法访问基础元素的任何调用代码。
通过引用
通过传递指定关键字 ByRef (Visual Basic)引用 相应参数 (parameter) 的过程定义。当您使用此传入机制时, Visual Basic 为直接引用调用代码中的基础编程元素。
传入机制和元素类型
选择传递机制与基础元素类型的类别。通过值或引用所引用的 Visual Basic 提供程序代码。值类型或引用类型引用某个编程元素如何存储在内存中。
但是,传入机制和元素类型具有关联性。引用类型的值在其他位置是指向数据在内存。这意味着,当通过值传递引用类型时,过程代码具有指向基础元素的数据,因此,即使它不能访问基础元素。例如,因此,如果此元素为数组变量,过程代码无法访问该变量的,但是,它可以访问数组成员。
修改能力
将不可更改元素作为参数传递时,过程不能在调用代码中修改它,它是通过 ByVal 或 ByRef。
对于可修改元素,下表概括了元素类型与传入机制之间的交互。
元素类型 |
通过的 ByVal |
通过的 ByRef |
---|---|---|
值类型 (仅包含值) |
该过程不能更改该其成员变量或中的任何一个。 |
该过程能够更改变量及其成员。 |
引用类型 (包含指向类或结构的实例) |
该过程不能更改变量,但可以更改它指向的实例的成员。 |
该过程可以更改它指向的实例的变量和成员。 |