【发布时间】:2009-04-03 14:01:47
【问题描述】:
使用 VB.NET,有没有办法在调用 dll 中的函数时传递引用参数。
假设我想将 arg2 作为参考参数传递,我该怎么做?
method.Invoke(obj, New [Object]() {arg1, arg2, arg3})
换句话说,我想将 arg2 指向被调用函数中的其他内容。
【问题讨论】:
标签: vb.net dll reference arguments
使用 VB.NET,有没有办法在调用 dll 中的函数时传递引用参数。
假设我想将 arg2 作为参考参数传递,我该怎么做?
method.Invoke(obj, New [Object]() {arg1, arg2, arg3})
换句话说,我想将 arg2 指向被调用函数中的其他内容。
【问题讨论】:
标签: vb.net dll reference arguments
如果目标函数定义为ByRef,它将自动工作,否则 AFAIK 你不能。
这样称呼它:
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]
【讨论】: