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

时间:2009-04-03 14:01:48

标签: vb.net dll reference arguments

使用VB.NET,有没有办法在调用dll中的函数时传递引用参数。

假设我想传递arg2作为参考参数,我该怎么做?


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

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

2 个答案:

答案 0 :(得分:1)

如果目标函数定义为ByRef它将自动运行,否则AFAIK你不能。

称之为:

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

在您的情况下,您实际发送一个参数(对象数组)

答案 1 :(得分:0)

是的,对象数组中的参数将保存在方法调用中设置的值。需要注意的一点是,如果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]