首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ParamArray ByRef

使用ParamArray ByRef
EN

Stack Overflow用户
提问于 2010-11-11 00:34:15
回答 3查看 2.3K关注 0票数 1

有什么方法可以使用ParamArray ByRef吗?除此之外,有没有一种变通方法可以完成同样的事情呢?

我可以做一些重载,但我正在努力避免笨拙。

背景:移植一些旧代码,并尽可能保持相同的结构。

编辑

我想要的一个具体示例:

我有一些移植到vb.net的turboBasic代码。代码内置了一些函数,如

代码语言:javascript
复制
Input#1,Data$(I%,1),Data$(I%,2),Data$(I%,3)

其中Input()获取文件#1,并从中读取三段数据,并将其赋给所示的三个变量。我想用我自己的Input()函数来复制这个行为。要做到这一点,我如何接受三个(或更多,或更少)变量并为它们赋值?

理想情况下,我只需要修改我自己的Input()定义,这样我就可以尽可能少地添加代码库。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-11 01:54:11

我从未使用过TurboBasic,但它的语法看起来与VB6 Input# statement相同,所以我猜语义也是一样的。

此VB6代码

代码语言:javascript
复制
Input #1,Data$(I%,1),Data$(I%,2),Data$(I%,3)

等同于此VB.Net

代码语言:javascript
复制
Input(1,Data$(I%,1))
Input(1,Data$(I%,2))
Input(1,Data$(I%,3))

VB.Net upgrade向导转换VB6 Input #语句,如下所示。我会像这样移植代码,而不是实现你自己的函数。从VB6转换到VB.net需要对代码库进行大量的编辑,我预计TurboBasic的要求会更高。

票数 2
EN

Stack Overflow用户

发布于 2010-11-11 00:43:02

目前没有办法在VB.NET中通过引用传递ParamArrays。要将一系列指定值传递给接受ParamArray的方法,CLR会用您指定的值填充一个具有适当长度的数组,然后将此数组传递给您调用的方法。没有办法将传递的数组中的所有值复制到原始变量中。

我假设您正在从VB6移植代码,其中传递ParamArrays的唯一方法是通过引用,但是您不应该在.NET中需要此功能。

票数 2
EN

Stack Overflow用户

发布于 2010-11-11 00:36:34

除非您将参数分配给一个新的数组实例,并且希望调用者(传递一个变量或字段)看到新的实例,否则不需要ByRef

即使没有ByRef,调用者仍然会看到数组内容的更改。(数组是引用类型)。

如果在方法中没有看到parameterName = something,那么就不需要ByRef

ParamArray参数的目的是将隐式创建的数组传递给它。

在这种用法中,ByRef不会有任何效果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4146683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档