VB.NET使用ByRef参数调用DLL方法

VB.NET使用ByRef参数调用DLL方法,vb.net,dll,reference,arguments,Vb.net,Dll,Reference,Arguments,使用VB.NET,在调用dll中的函数时是否有方法传递引用参数 假设我想将arg2作为引用参数传递,我该如何做呢 method.Invoke(obj, New [Object]() {arg1, arg2, arg3}) 换句话说,我想将arg2指向调用函数中的其他对象。如果目标函数定义为ByRef,它将自动工作,否则您可能无法 可以这样说: method.invoke(obj, arg1, arg2, arg3) 如果您实际发送一个参数(对象数组)是,对象数组中的参数将保存在方法调用中设

使用VB.NET,在调用dll中的函数时是否有方法传递引用参数

假设我想将arg2作为引用参数传递,我该如何做呢


method.Invoke(obj, New [Object]() {arg1, arg2, arg3})

换句话说,我想将arg2指向调用函数中的其他对象。

如果目标函数定义为
ByRef
,它将自动工作,否则您可能无法

可以这样说:

method.invoke(obj, arg1, arg2, arg3)

如果您实际发送一个参数(对象数组)

是,对象数组中的参数将保存在方法调用中设置的值。需要注意的一点是,如果arg1、arg2和arg3是值类型(如Int32),那么实际的arg1变量将不会被更新,因为它的值是复制到数组中的,而不是它的引用

要解决这个问题,请在函数调用之前创建对象数组,然后从数组中提取值。像这样

Dim paramArray = New [Object]() {arg1, arg2, arg3}
method.Invoke(obj, paramArray)
arg1 = paramArray[0]
arg2 = paramArray[1]
arg3 = paramArray[2]

是的,目标函数参数是由byref定义的,但它不起作用。是的,我就是这么叫它的。OIC,你是这么说的。我不相信这种类型的调用会有过载。是的,数组是非常有用的东西。因此,您可以向函数发送任意数量的参数。我喜欢您将VB和C混合在一起的方式。