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