有什么方法可以使用ParamArray ByRef吗?除此之外,有没有一种变通方法可以完成同样的事情呢?
我可以做一些重载,但我正在努力避免笨拙。
背景:移植一些旧代码,并尽可能保持相同的结构。
编辑
我想要的一个具体示例:
我有一些移植到vb.net的turboBasic代码。代码内置了一些函数,如
Input#1,Data$(I%,1),Data$(I%,2),Data$(I%,3)其中Input()获取文件#1,并从中读取三段数据,并将其赋给所示的三个变量。我想用我自己的Input()函数来复制这个行为。要做到这一点,我如何接受三个(或更多,或更少)变量并为它们赋值?
理想情况下,我只需要修改我自己的Input()定义,这样我就可以尽可能少地添加代码库。
发布于 2010-11-11 01:54:11
我从未使用过TurboBasic,但它的语法看起来与VB6 Input# statement相同,所以我猜语义也是一样的。
此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 upgrade向导转换VB6 Input #语句,如下所示。我会像这样移植代码,而不是实现你自己的函数。从VB6转换到VB.net需要对代码库进行大量的编辑,我预计TurboBasic的要求会更高。
发布于 2010-11-11 00:43:02
目前没有办法在VB.NET中通过引用传递ParamArrays。要将一系列指定值传递给接受ParamArray的方法,CLR会用您指定的值填充一个具有适当长度的数组,然后将此数组传递给您调用的方法。没有办法将传递的数组中的所有值复制到原始变量中。
我假设您正在从VB6移植代码,其中传递ParamArrays的唯一方法是通过引用,但是您不应该在.NET中需要此功能。
发布于 2010-11-11 00:36:34
除非您将参数分配给一个新的数组实例,并且希望调用者(传递一个变量或字段)看到新的实例,否则不需要ByRef。
即使没有ByRef,调用者仍然会看到数组内容的更改。(数组是引用类型)。
如果在方法中没有看到parameterName = something,那么就不需要ByRef。
ParamArray参数的目的是将隐式创建的数组传递给它。
在这种用法中,ByRef不会有任何效果。
https://stackoverflow.com/questions/4146683
复制相似问题