有什么方法可以使用Paramarray Byref?除非这样,否则它可以解决同样的事情吗?

我可以做一些过载,但是我试图避免笨拙。

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


编辑

我想要的特定示例:

我有一些涡轮上的代码,可以移植到vb.net。该代码具有诸如

Input#1,Data$(I%,1),Data$(I%,2),Data$(I%,3)

其中输入()获取文件#1并从中读取三个数据,并将其分配给所示的三个变量。我想用自己的输入()函数复制此行为。为此,我该如何摄入三个(或更长时间)变量并为它们分配值?

理想情况下,我将仅修改自己对输入()的定义来实现这一目标,这样我就可以尽可能少地在代码库中进行混乱。

有帮助吗?

解决方案

我从未使用过涡轮质,但语法看起来与VB6相同 输入#语句, ,所以我猜这些语义也一样。

此VB6代码

Input #1,Data$(I%,1),Data$(I%,2),Data$(I%,3)

等同于这个vb.net

Input(1,Data$(I%,1))
Input(1,Data$(I%,2))
Input(1,Data$(I%,3))

VB.NET升级向导转换VB6 Input # 这样的陈述。我只会将代码移植,而不是实现自己的功能。从VB6转换为VB.NET需要在代码库中进行大量编辑,我希望Turbobasic更加要求更高。

其他提示

除非您将参数分配给新数组实例,并期望呼叫者(通过变量或字段)查看新实例,则不需要 ByRef.

即使没有 ByRef, ,呼叫者仍将看到对数组内容的更改。 (数组是参考类型)。

如果你看不到 parameterName = something 在方法中,您不需要 ByRef.

一个 ParamArray 参数将其传递一个隐式创建的数组。
在这样的用法中 ByRef 没有任何效果。

当前无法通过vb.net中的参考传递Paramarrays。要将一系列指定值传递给接受paramarray的方法,CLR用指定的值填充了适当长度的数组,然后将此数组传递到您所调用的方法中。无法将所有值从传递的数组中复制并回到原始变量中。

我认为您是从vb6移植代码 只要 传递Paramarrays的方法是参考,但是您不需要在.NET中使用此功能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top