2

VB.NET を使用して、dll で関数を呼び出すときに参照引数を渡す方法はありますか。

arg2 を参照引数として渡したいとします。


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

つまり、呼び出された関数内で arg2 を別の何かに向けたいと考えています。

4

2 に答える 2

1

定義されたターゲット関数ByRefが自動的に機能する場合、それ以外の場合はできません。

次のように呼び出します。

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

あなたの場合、実際に1つのパラメーター(オブジェクト配列)を送信します

于 2009-04-03T14:11:10.733 に答える
0

はい、オブジェクト配列のパラメーターは、メソッド呼び出し内で設定された値を保持します。注意すべきことの 1 つは、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]
于 2011-03-15T15:31:45.687 に答える