通过值传递参数和通过引用传递参数之间的差异 (Visual Basic)

4 篇文章 0 订阅

通过值传递参数和通过引用传递参数之间的差异 (Visual Basic)


将一个或多个参数 (Argument) 传递给过程时,每个参数分别对应于调用代码中的一个基础编程元素。 您可以传递此基础元素的值,也可以对其进行引用。 这被称为“传入机制”。

通过在过程定义中为相应的参数 (parameter) 指定 ByVal (Visual Basic) 关键字,可以通过值传递参数 (argument)。 使用此传入机制时,Visual Basic 将此基础编程元素的值复制到过程中的一个局部变量中。 过程代码不具有任何访问调用代码中的基础元素的权限。

通过在过程定义中为相应的参数 (parameter) 指定 ByRef (Visual Basic) 关键字,可以通过引用传递参数 (argument)。 使用此传入机制时,Visual Basic 使过程直接引用调用代码中的基础编程元素。

选择传入机制不同于将基础元素类型分类。 通过值传递或通过引用传递是指 Visual Basic 向过程代码提供什么操作。 而值类型或引用类型是指编程元素将以何种方式存储在内存中。

但是,传入机制和元素类型又相互关联。 引用类型的值是一个指针,它指向内存中其他位置的数据。 这意味着在通过值传递引用类型时,过程代码具有一个指向基础元素的数据的指针(即使它不能访问基础元素本身)。 例如,如果此元素为数组变量,过程代码将不具有访问该变量的权限,但它可以访问数组成员。

将不可修改元素作为参数传递时,过程永远不能在调用代码中修改它,不论它的传入机制是 ByVal 还是 ByRef

对于可修改元素,下表概括了元素类型与传入机制之间的相互作用。

元素类型

传入机制为 ByVal

传入机制为 ByRef

值类型(仅包含值)

过程不能更改变量或它的任何成员。

过程能够更改变量及其成员。

引用类型(包含指向类或结构实例的指针)

过程不能更改变量,但可以更改它指向的实例的成员。

过程能够更改变量和它指向的实例的成员。

将一个或多个参数 (Argument) 传递给过程时,每个参数分别对应于调用代码中的一个基础编程元素。 您可以传递此基础元素的值,也可以对其进行引用。 这被称为“传入机制”。

通过在过程定义中为相应的参数 (parameter) 指定 ByVal (Visual Basic) 关键字,可以通过值传递参数 (argument)。 使用此传入机制时,Visual Basic 将此基础编程元素的值复制到过程中的一个局部变量中。 过程代码不具有任何访问调用代码中的基础元素的权限。

通过在过程定义中为相应的参数 (parameter) 指定 ByRef (Visual Basic) 关键字,可以通过引用传递参数 (argument)。 使用此传入机制时,Visual Basic 使过程直接引用调用代码中的基础编程元素。

选择传入机制不同于将基础元素类型分类。 通过值传递或通过引用传递是指 Visual Basic 向过程代码提供什么操作。 而值类型或引用类型是指编程元素将以何种方式存储在内存中。

但是,传入机制和元素类型又相互关联。 引用类型的值是一个指针,它指向内存中其他位置的数据。 这意味着在通过值传递引用类型时,过程代码具有一个指向基础元素的数据的指针(即使它不能访问基础元素本身)。 例如,如果此元素为数组变量,过程代码将不具有访问该变量的权限,但它可以访问数组成员。

将不可修改元素作为参数传递时,过程永远不能在调用代码中修改它,不论它的传入机制是 ByVal 还是 ByRef

对于可修改元素,下表概括了元素类型与传入机制之间的相互作用。

元素类型

传入机制为 ByVal

传入机制为 ByRef

值类型(仅包含值)

过程不能更改变量或它的任何成员。

过程能够更改变量及其成员。

引用类型(包含指向类或结构实例的指针)

过程不能更改变量,但可以更改它指向的实例的成员。

过程能够更改变量和它指向的实例的成员。


https://msdn.microsoft.com/zh-cn/library/eek064h4(v=vs.100).aspx

将一个或多个参数 (Argument) 传递给过程时,每个参数分别对应于调用代码中的一个基础编程元素。 您可以传递此基础元素的值,也可以对其进行引用。 这被称为“传入机制”。

通过在过程定义中为相应的参数 (parameter) 指定 ByVal (Visual Basic) 关键字,可以通过值传递参数 (argument)。 使用此传入机制时,Visual Basic 将此基础编程元素的值复制到过程中的一个局部变量中。 过程代码不具有任何访问调用代码中的基础元素的权限。

通过在过程定义中为相应的参数 (parameter) 指定 ByRef (Visual Basic) 关键字,可以通过引用传递参数 (argument)。 使用此传入机制时,Visual Basic 使过程直接引用调用代码中的基础编程元素。

选择传入机制不同于将基础元素类型分类。 通过值传递或通过引用传递是指 Visual Basic 向过程代码提供什么操作。 而值类型或引用类型是指编程元素将以何种方式存储在内存中。

但是,传入机制和元素类型又相互关联。 引用类型的值是一个指针,它指向内存中其他位置的数据。 这意味着在通过值传递引用类型时,过程代码具有一个指向基础元素的数据的指针(即使它不能访问基础元素本身)。 例如,如果此元素为数组变量,过程代码将不具有访问该变量的权限,但它可以访问数组成员。

将不可修改元素作为参数传递时,过程永远不能在调用代码中修改它,不论它的传入机制是 ByVal 还是 ByRef

对于可修改元素,下表概括了元素类型与传入机制之间的相互作用。

元素类型

传入机制为 ByVal

传入机制为 ByRef

值类型(仅包含值)

过程不能更改变量或它的任何成员。

过程能够更改变量及其成员。

引用类型(包含指向类或结构实例的指针)

过程不能更改变量,但可以更改它指向的实例的成员。

过程能够更改变量和它指向的实例的成员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值